草庐IT

random - 如何正确播种随机数生成器

我正在尝试在Go中生成一个随机字符串,这是我目前编写的代码:packagemainimport("bytes""fmt""math/rand""time")funcmain(){fmt.Println(randomString(10))}funcrandomString(lint)string{varresultbytes.Buffervartempstringfori:=0;i我的实现非常缓慢。使用time播种会在一定时间内带来相同的随机数,因此循环会一次又一次地迭代。如何改进我的代码? 最佳答案 每次设置相同的种子时,都会得到相

linux -/dev/random 非常慢?

一些背景信息:我希望在RedHat服务器上运行一个脚本来从/dev/random读取一些数据并使用Perlunpack()命令将其转换为十六进制字符串以供以后使用(基准数据库操作)。我在/dev/random上运行了几个“head-1”,它似乎运行良好,但在调用了几次之后,它就会挂起。几分钟后,它终于会输出一小段文字,然后结束。我切换到/dev/urandom(我真的不想这样做,它的速度较慢,而且我不需要那种随机性),它在前两三个调用中运行良好,然后它也开始挂起。我想知道是不是“head”命令在轰炸它,所以我尝试使用Perl做一些简单的I/O,它也挂了。作为最后的努力,我使用“dd”命

bash - 如何base64编码/dev/random或/dev/urandom?

cat/dev/urandom总是一种在显示器上创建滚动字符的有趣方式,但会产生太多不可打印的字符。有没有一种简单的方法可以在命令行上对其进行编码,使其所有输出都是可读字符,例如base64或uuencode。请注意,我更喜欢不需要创建额外文件的解决方案。 最佳答案 类似的东西呢cat/dev/urandom|base64它提供了(很多)类似的东西hX6VYoTG6n+suzKhPl35rI+Bsef8FwVKDYlzEJ2i5HLKa38SLLrE9bW9jViSR1PJGsDmNOEgWu+6HdYm9SsRDcvDlZAdMX

python - random.choice 的加权版本

我需要编写一个加权版本的random.choice(列表中的每个元素都有不同的被选中概率)。这是我想出的:defweightedChoice(choices):"""Likerandom.choice,buteachelementcanhaveadifferentchanceofbeingselected.choicescanbeanyiterablecontainingiterableswithtwoitemseach.Technically,theycanhavemorethantwoitems,therestwilljustbeignored.Thefirstitemisthet

java - Math.random() 与 Random.nextInt(int)

Math.random()*n和Random.nextInt(n)有什么区别,其中n是整数? 最佳答案 这里是thedetailedexplanation为什么“Random.nextInt(n)比Math.random()*n更高效且偏差更小”来自Gili链接到的Sun论坛帖子:Math.random()usesRandom.nextDouble()internally.Random.nextDouble()usesRandom.next()twicetogenerateadoublethathasapproximatelyuni

java - Math.random() 解释

这是一个非常简单的Java(尽管可能适用于所有编程)问题:Math.random()returnsanumberbetweenzeroandone.如果我想返回一个介于0和00之间的整数,我会这样做:(int)Math.floor(Math.random()*101)在一到一百之间,我会这样做:(int)Math.ceil(Math.random()*100)但是如果我想得到一个介于3和5之间的数字怎么办?会不会像下面的语句:(int)Math.random()*5+3我知道java.lang.util.Random中的nextInt()。但我想学习如何使用Math.random()来

java - java.util.Random 真的那么随机吗?我怎样才能生成52! (阶乘)可能的序列?

我一直在使用Random(java.util.Random)来洗一副52张牌。有52个!(8.0658175e+67)个可能性。然而,我发现java.util.Random的种子是一个long,在2^64(1.8446744e+19)时要小得多。从这里开始,我怀疑java.util.Random是否真的那么随机;它真的能够生成所有52个吗?可能性?如果不是,我怎样才能可靠地生成一个可以产生全部52个的更好的随机序列!可能性? 最佳答案 与您的问题所暗示的相比,选择随机排列同时需要更多和更少的随机性。让我解释一下。坏消息:需要更多随机

c++ - 为什么每次使用 std::random_device 和 mingw gcc4.8.1 运行都会得到相同的序列?

我使用下面的代码来测试C++图书馆。为什么每次运行已编译的可执行文件都得到完全相同的序列?是rd()编译时确定性?如何为每次运行获得不同的输出?Windows764位上的GCC4.8.1。使用http://nuwen.net/mingw.html中的MinGW分发.编辑:我用VisualStudio测试了相同的代码。没有问题。输出是不确定的。这可能是我使用的mingwgcc4.8.1中的一个错误。#include#includeusingnamespacestd;intmain(){random_devicerd;mt19937mt(rd());uniform_int_distribu

ios - 使用 arc4random() 时如何选择值的范围

我可以在使用arc4random()时设置一个数字范围吗?仅例如50-100。 最佳答案 正如下面其他帖子中所指出的,最好使用arc4random_uniform。(最初编写此答案时,arc4random_uniform不可用)。除了避免arc4random()%x的模偏差之外,它还避免了arc4random在短时间内递归使用时的播种问题。arc4random_uniform(4)将生成0、1、2或3。因此您可以使用:arc4random_uniform(51)只需将50添加到结果中即可获得50和100(含)之间的范围。

objective-c - arc4random 和 arc4random_uniform 有什么区别?

这个问题在这里已经有了答案:Arc4randommodulobiased(1个回答)关闭7年前。我已经看过关于Objective-C中random和arc4random之间差异的旧帖子,并且我已经在网上看到了这个问题的答案,但我真的没有理解,所以我希望这里的人能以更容易理解的方式解释它。使用arc4random和arc4random_uniform生成随机数有什么区别? 最佳答案 arc4random返回一个介于0和(2^32)-1之间的整数,而arc4random_uniform返回一个介于0和您传递的上限之间的整数。来自man3