Python设置随机化的程度如何?

首先,我知道我不应该尝试在这个问题中描述的内容,这纯粹是假设,所以请不要对我大喊大叫.

Python集不维护顺序,因为它们是没有map部分的哈希映射.所以我想知道他们在随机化事情上有多好.显然这对于​​加密来说是不够的,并且不能用于整数(因为Python哈希是整数上的身份),但它对于游戏和东西是否足够好?

有意义的是它可以正常工作,因为它在哈希上进行修改,但我不确定哈希是多么好以及它对随机化有多好.

P.S:集合将始终为相同的值返回相同的shuffle,但您可以假设这不是问题.

最佳答案 集合没有订单,因此根据定义它不能随机化订单.如果您关心订单,迭代订单将无法使用.正如BrenBam所说,如果你以任何方式关心订单,你就不能依赖它,因为它是一个实现细节.

随机化顺序的正确方法是random.shuffle

some_set_of_stuff = set(...)
some_list_of_stuff = list(some_set_of_stuff)  # you MUST make an ordered container for this!
random.shuffle(some_list_of_stuff)

或者你可以使用random.sample,如果你真的需要.

some_set_of_stuff = set(...)
randomized = random.sample(some_set_of_stuff, len(some_set_of_stuff))
点赞