草庐IT

RAND_egd

全部标签

c++ - 为什么 C++ stdlib rand() 函数跨平台为同一个种子提供不同的值?

我知道rand()函数会根据给定的种子生成伪随机数,并且在给定的平台上,它总是会从同一个种子生成相同的数字序列,我想知道的是为什么它在使用相同库的平台之间给出不同的序列?IE。rand()是如何实现的? 最佳答案 C++标准没有指定rand()函数使用什么算法。功能由在您的系统上编写标准库的人定义:Microsoft负责VisualStudio附带的标准库,GNU人员负责GCC打包的标准库。您的编译器正在选择从何处获取其库,因此对于同一系统上的不同编译器,您可能有不同版本的标准库。要点保持不变:规范保证了哪些功能可用以及它们做什么;

c++ - rand() 和 random() 函数有什么区别?

有一次,我的老师教我使用randomize()和random()在C++Builder中生成伪随机数的函数。现在我更喜欢在VS2012中工作,但是当我尝试在那里使用这些函数时,它说“找不到标识符”,即使我添加了#include.经过一段时间的谷歌搜索,我发现还有rand()和srand()功能。它们之间有什么区别,哪个更好用? 最佳答案 randomize()和random()不是标准库的一部分。也许你的老师用这些名字写了函数供你在类里面使用,或者你的意思是random()和srandom()它们是POSIX的一部分,在Window

c++ - 如何使用 rand_r 以及如何以线程安全的方式使用它?

我正在尝试学习如何使用rand_r,在阅读了thisquestion之后我仍然有点困惑,有人可以看看并指出我错过了什么吗?据我了解,rand_r需要一个指向某个值(或具有某些初始值的内存)的指针,并在每次调用它时使用它来生成新数字。每个调用rand_r的线程都应该为它提供一个唯一的指针(或一block内存),以获取不同线程之间的“实际随机”数。这就是为什么:intglobalSeed;//thread1rand_r(&globalSeed);//thread2rand_r(&globalSeed);是错误的使用方式。如果我有intseed1,seed2;//thread1rand_r(

python - np.random.rand 与 np.random.random

我发现Python(及其生态系统)充满了奇怪的约定和不一致,这是另一个例子:np.random.randCreateanarrayofthegivenshapeandpopulateitwithrandomsamplesfromauniformdistributionover[0,1).np.random.randomReturnrandomfloatsinthehalf-openinterval[0.0,1.0).Resultsarefromthe“continuousuniform”distributionoverthestatedinterval.???到底有什么区别?

python - Python 中 numpy.random.rand 与 numpy.random.randn 之间的区别

numpy.random.rand和numpy.random.randn有什么区别?从文档中,我知道它们之间的唯一区别是每个数字的概率分布,但整体结构(维度)和使用的数据类型(float)是相同的。因此,我很难调试神经网络。具体来说,我正在尝试重新实现NeuralNetworkandDeepLearningbookbyMichaelNielson中提供的神经网络.原码可以找到here.我的实现和原来的一样;但是,我改为在init函数中使用numpy.random.rand而不是numpy.random.randn定义和初始化权重和偏差功能如原文所示。但是,我使用random.rand来

c++ - rand() 每次运行程序时返回相同的数字

在这个涉及随机数生成的相当基本的C++代码片段中:includeusingnamespacestd;intmain(){cout为什么我总是得到41的输出?我试图让它输出一些介于0和100之间的随机数。也许我不了解rand函数的工作原理? 最佳答案 您需要更改seed.intmain(){srand(time(NULL));coutsrand播种对于c语言代码也是如此。另请参阅:http://xkcd.com/221/ 关于c++-rand()每次运行程序时返回相同的数字,我们在Stac

c++ - 如何从 rand() 缩小数字?

以下代码每秒输出一个随机数:intmain(){srand(time(NULL));//Seedsnumbergeneratorwithexecutiontime.while(true){intrawRand=rand();std::cout如何缩小这些数字的大小,使它们始终在0-100的范围内? 最佳答案 如果您正在使用C++并且担心良好的分布,您可以使用TR1C++11.#includestd::random_devicerseed;std::mt19937rgen(rseed());//mersenne_twisterstd:

c++ - `rand()` 的用处 - 或者谁应该调用 `srand()` ?

背景:我使用rand(),std::rand(),std::random_shuffle()以及我的代码中用于科学计算的其他函数。为了能够重现我的结果,我总是明确指定随机种子,并通过srand()设置它.直到最近,当我发现libxml2也会调用srand()懒惰地第一次使用它-这是在我早期的srand()之后打电话。我填写了bugreporttolibxml2aboutitssrand()call,但我得到了答案:Initializelibxml2firstthen.That'saperfectlylegalcalltobemadefromalibrary.Youshouldnotex

random - 去 rand.Intn 相同的数字/值

谁能告诉我为什么这里是Go示例:https://tour.golang.org/basics/1总是为rand.Intn(10)返回相同的值? 最佳答案 2个原因:你必须初始化全局Source由rand.Intn()使用和rand包的其他函数使用rand.Seed().例如:rand.Seed(time.Now().UnixNano())查看DifficultywithGoRandpackage的可能重复项.引用rand的包文档:Top-levelfunctions,suchasFloat64andInt,useadefaultsh

go - 如何使用 "crypto/rand"包生成随机整数?

假设我想生成一个介于0到27之间的安全随机整数:funcInt(randio.Reader,max*big.Int)(n*big.Int,errerror)在"crypto/rand"包中。我该怎么做?我不太明白它是如何工作的,为什么它不返回内置的Go整数之一而不是指向某个big.Int类型的指针?编辑:这对于token来说是否足够安全?funcgetToken(lengthint)string{token:=""codeAlphabet:="ABCDEFGHIJKLMNOPQRSTUVWXYZ"codeAlphabet+="abcdefghijklmnopqrstuvwxyz"cod