Python集的随机性如何?

2024-06-24 13:40:08 发布

您现在位置:Python中文网/ 问答频道 /正文

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

Python集不维护顺序,因为它们是没有map部分的散列映射。所以我想知道他们在随机化方面做得有多好。显然,这对于加密是不够的,而且对int也不起作用(因为Python散列是int上的标识),但是对于游戏和其他东西来说,它足够好吗?你知道吗

这是有道理的,它将体面地工作,因为它对散列的modding,但我真的不知道有多好,散列以及它将如何工作的随机化。你知道吗

注:对于相同的值,集合总是会返回相同的shuffle,但您可以假设这不是问题。你知道吗


Tags: 游戏map顺序标识intshuffle道理体面地
1条回答
网友
1楼 · 发布于 2024-06-24 13:40:08

一个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))

相关问题 更多 >