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

时间:2015-12-27 05:50:49

标签: python random hash set

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

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

因为它在散列上进行修改,所以它可以正常工作,但我不确定散列是多么好以及随机化它的效果如何。

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

1 个答案:

答案 0 :(得分:2)

set没有订单,因此根据定义,它不能随机化订单。如果您关心订单,迭代订单将无法使用。正如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))
相关问题