- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
random.shuffle(lst_shuffle, random.random)
random.random()¶ Return the next random floating point number in the range [0.0, 1.0).
Pseudorandom number generators
Most, if not all programming languages have libraries that include a pseudo-random
number generator. This generator usually returns a random number between 0 and 1 (not
including 1). In a perfect generator all numbers have the same probability of being selected but
in the pseudo generators some numbers have zero probability.
最佳答案
现有答案很好地解决了问题的具体问题,但我认为值得一提的是一个附带问题:为什么您特别有可能希望将替代“随机生成器”传递给 shuffle
与 random
中的其他功能相反模块。报价 the docs :
Note that for even rather small len(x), the total number of permutations of x is larger than the period of most random number generators; this implies that most permutations of a long sequence can never be generated.
random
模块使用了一个特别好的和经过充分研究的伪随机生成器,
Mersenne Twister , 期间为
2**19937-1
-- 以十进制数字写出时超过 6000 位的数字,如
len(str(2**19937-1))
将确认;-)。在我的笔记本电脑上,我每秒可以生成大约 500 万个这样的数字:
$ python -mtimeit -s'import random' 'random.random()'
1000000 loops, best of 3: 0.214 usec per loop
os.urandom
给出字节序列,但在
struct 的帮助下很容易将它们变成随机数:
>>> n = struct.calcsize('I')
>>> def s2i(s): return struct.unpack('I', s)[0]
...
>>> maxi = s2i(b'\xff'*n) + 1
>>> maxi = float(s2i(b'\xff'*n) + 1)
>>> def rnd(): return s2i(os.urandom(n))/maxi
random.shuffle(somelist, rnd)
少担心偏见;-)。
random.random()
慢大约 50 倍。 - 如果我们需要许多随机数,这可能是一个重要的实际考虑因素(如果我们不需要,那么担心可能存在的偏差可能会放错地方;-)。
os.urandom
方法也很难以可预测、可重复的方式使用(例如,用于测试目的),而使用
random.random()
您只需要提供一个固定的首字母
random.seed
在测试开始时,以保证可重现的行为。
os.urandom
仅在您需要“加密质量”随机数时使用 - 确定的攻击者无法预测的随机数 - 因此愿意为使用它而不是
random.random
支付实际价格.
关于python - random.random 到底在做什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1961340/
这对你们来说可能很简单,但由于我是java新手,所以我想知道实际上什么是 接下来的部分会发生什么? if (args.length > 0) { file = args[0]; } publi
在我的 View Controller 中,我将 UITapGestureRecognizer 添加到 self.view。我在 self.view 之上添加了一个小 View 。当我点击小 View
我今天尝试从 Obj-C 开始并转到 Swift,我正在阅读文档。我试图在 Swift 中创建一个简单的 IBOutlet,但它不断给我这些错误。 View Controller 没有初始化器 req
我正在尝试使用 VIM 完成(字典和当前缓冲区),但我遇到了问题?和 !在方法名称的末尾。我能以某种方式向 vim 解释方法名称(基本上是单词)最后只能有它,而且只有一个,即 method_name
我是一名优秀的程序员,十分优秀!