Tag: 随机

包含范围内的随机浮点双

由于Math.random() (以及大多数伪随机数生成器,AFAIK)产生数字,因此我们可以很容易地获得所需范围[X,Y)内的随机浮点数(注意X是包含的,Y是独占的)和下面列出的函数在[0,1) : function randomInRange(min, max) { return Math.random() * (max-min) + min; } // Notice that we can get “min” exactly but never “max”. 我们怎样才能得到一个包含两个边界的期望范围内的随机数,即[X,Y] ? 我想我们可以通过“滚动” IEE-754浮点双精度的位来“增加”我们从Math.random() (或等效物)的值,以将最大可能值精确地设置为1.0,但这似乎很痛苦。做得对,特别是在不适合位操作的语言中。 有没有更简单的方法? (顺便说一下,为什么随机数生成器在[0,1)而不是[0,1]产生数字?) [编辑]请注意,我没有必要这样做,我完全清楚这种区别是迂腐的。 只是好奇并希望得到一些有趣的答案。 如果这个问题不合适,请随意投票结束。

以N为模的随机数的均匀性

在[0,n)中选择随机数的一种常用方法是采用rand() modulo n : rand() % n 。 但是,即使可用的rand()实现返回的结果完全一致,当RAND_MAX + 1不均匀地除以n时,不应该产生[0,n]数的一致性问题。 例如,假设RAND_MAX是2, n是2.然后在3个可能的rand()输出中:0,1和2,当我们使用模n时,我们分别得到0,1和0。 因此输出将根本不均匀。 这在实践中是一个真正的问题吗? 选择[0,n]中的随机数是一种更好的方法,从rand()输出中均匀导出,最好没有任何浮点运算?

srand与rand函数有什么关系?

据我所知,如果不更改种子数,rand()函数会生成每个运行它的相同数字。 这就是srand()的用武之地。时间总是在变化所以我知道你应该将time(null)参数传递给srand。 我的问题是从教程网站下面的代码。 int main() { int i, n=5; time_t t; /* Intializes random number generator */ srand((unsigned) time(&t)); /* Print 5 random numbers from 0 to 50 */ for( i = 0 ; i < n ; i++ ) { printf("%d\n", rand() % 50); } return(0); } 我看不到srand的链接 ((unsigned) time(&t)); 和兰特。 printf(“%d\n”, rand() % […]

如何使用rand函数在特定范围内生成数字?

我想在特定范围内制作随机数,例如“选择18到35之间的随机数”? 我怎么能用rand()函数做到这一点?

rand()的实现

我在C中编写一些嵌入式代码,需要使用rand()函数。 不幸的是,控制器的库不支持rand()。 我需要一个快速的简单实现,但更重要的是空间开销很小,产生相对高质量的随机数。 有谁知道使用哪种算法或示例代码? 编辑:它用于图像处理,因此“相对高质量”意味着良好的循环长度和良好的均匀特性。

如何并行生成随机数?

我想使用openMP并行生成伪随机数,如下所示: int i; #pragma omp parallel for for (i=0;i<100;i++) { printf("%d %d %d\n",i,omp_get_thread_num(),rand()); } return 0; 我已经在Windows上测试了它并且我获得了巨大的加速,但是每个线程生成了完全相同的数字。 我已经在Linux上测试了它并且我得到了巨大的减速,8核处理器上的并行版本比顺序慢了大约10倍,但每个线程生成了不同的数字。 有没有办法同时加速和不同的数字? 编辑27.11.2010 我想我已经用Jonathan Dursi的post解决了这个问题。 似乎下面的代码在linux和windows上运行得很快。 数字也是伪随机的。 你怎么看待这件事? int seed[10]; int main(int argc, char **argv) { int i,s; for (i=0;i<10;i++) seed[i] = rand(); #pragma omp parallel private(s) { s = seed[omp_get_thread_num()]; #pragma omp for for (i=0;i<1000;i++) { printf("%d […]

为什么rand()总是返回相同的值?

可能重复: 在C中生成随机数 使用rand生成随机数 我正在尝试生成随机数,但我不断得到数字41.这样一个简单的片段可能会出错? #include #include int main(void) { int a = rand(); printf(“%d”,a); return 0; } 感谢帮助。

跨平台的一致的伪随机数

我正在寻找一种方法来生成伪随机数序列,这将为任何平台上的给定种子产生相同的序列结果。 我假设rand() / srand()不一致(我可能很容易对这个假设错误)。

随机数组生成,没有重复

我正在尝试创建一些生成随机数组但没有重复值的内容。 我已经看过其他答案,但似乎没有人帮我理解。 我想不出实际生成不包含重复项的随机数的方法。 这是我到目前为止所尝试的: srand(time(NULL)); int numbers [4]; for (int x=0; x!=4;x++) { numbers[x] = 1 + (rand() % 4) ; printf(“%d “, numbers[x]); } 任何帮助将不胜感激。

使用C在文本文件中返回随机行的最佳方法是什么?

使用C在文本文件中返回随机行的最佳方法是什么? 它必须使用标准I / O库( ),因为它适用于Nintendo DS自制程序。 澄清: 使用文件中的标题来存储行数不适用于我想要做的事情。 我希望它尽可能随机(如果每条线具有被选为每隔一条线的相同概率,则最好。) 程序运行时,该文件永远不会更改。 (这是DS,所以没有多任务处理。)