Tag: 随机

读/ dev / urandom线程安全吗?

这是代码: unsigned int number; FILE* urandom = fopen(“/dev/urandom”, “r”); if (urandom) { size_t bytes_read = fread(&number, 1, sizeof(number), urandom); DCHECK(bytes_read == sizeof(number)); fclose(urandom); } else { NOTREACHED(); } 如果没有,我如何使其线程安全?

在C中随机化一个字符串

我试图在C中生成一个80个字符的固定字符串的随机排列。令我沮丧的是,我正在研究的系统缺乏strfry()。 对我来说,生成此字符串的随机排列的最佳方法是什么? 因为这将循环约。 100,000次,性能是一个问题。

随机数组有很多数字得到错误

我有一个功课要做:我需要在一个包含100000个数字的随机数组中测量bubblesort的时间。 当我尝试随机生成数字时,我收到错误。如果我不随机生成数字,我每次都会得到0。 到目前为止我这样做了: main.c int main() { int *a,n = 0; srand(time(0)); beolvas(&a,&n,”be.txt”); clock_t start,stop; start = clock(); bubblesort(a,n); stop = clock(); float timespent = (stop – start)/CLOCKS_PER_SEC; printf(“%f\n”,timespent); kiir(a,n); free(a); return 0; } kibe.c(sorry I write it bad) void beolvas(int **a,int *n,const char * file) { int i; FILE * fin; fin = fopen(“be.txt”, […]

如何为每个玩家生成不同的随机数?

两位玩家都获得相同的随机数! 我希望每个玩家得到一个不同的数字,因为他们掷骰子。 这是代码: #include #include #include int roll_a_dice(void); int main(int argc, const char *argv[]) { int flag; int answer1 = roll_a_dice(); int answer2 = roll_a_dice(); printf(“Die 1 (rolled by player 1): %d\n”, answer1); printf(“Die 2 (rolled by player 2): %d\n”, answer2); if (answer1>answer2) { printf(“Player 1 is starting!\n”); flag = 1; } else { printf(“Player […]

为什么在使用rand()时会得到这种特殊的颜色模式?

我试图创建一个图像文件,如下所示: uint8_t raw_r[pixel_width][pixel_height]; uint8_t raw_g[pixel_width][pixel_height]; uint8_t raw_b[pixel_width][pixel_height]; uint8_t blue(uint32_t x, uint32_t y) { return (rand()%2)? (x+y)%rand() : ((x*y%1024)%rand())%2 ? (xy)%rand() : rand(); } uint8_t green(uint32_t x, uint32_t y) { return (rand()%2)? (xy)%rand() : ((x*y%1024)%rand())%2 ? (x+y)%rand() : rand(); } uint8_t red(uint32_t x, uint32_t y) { return (rand()%2)? (yx)%rand() : ((x*y%1024)%rand())%2 ? (x+y)%rand() : rand(); } […]

在C中生成范围内的随机数?

期望在C中制作一个非常简单的随机数生成器方法。数字应该在0到24之间,并且可以是例如14.5f。 任何帮助都会很棒,谢谢!

避免使用srand()重复生成种子

我有一个典型的情况,我需要生成一批随机数。 我使用了一个循环,每次传递产生100个随机数: for(int i=0; i<npasses; i++) { srand(time(NULL)); //Initialize seed for(int j=0; j<100; j++) printf("%d ", rand()%10); printf("\n"); //New line after 100 numbers } 现在,内循环在不到一毫秒的时间内执行。 结果,time()的值没有变化。 这会将种子(srand())重新初始化为相同的值,并且我的随机数是重复的。 任何人都可以建议解决方法/修复。

用偏置硬币模拟抛硬币的程序

我没有任何代码,主要是因为我还没有开始处理这个特定的问题。 这是我的C编程课的作业。 我的教授希望我们创建一个抛硬币(头或尾)10,000次的程序。 但是,磁头元件有55%的可能性发生。 我们必须使用具有用户提供的seed值的随机数生成器。 从概念上讲,我知道如何处理这个问题; 编码方面,我不知道。 我知道如何制作抛硬币计划,但不是偏见。 任何和所有的帮助将不胜感激。 我附上了我的硬币计划程序的代码。 我打算用这个作为这个新的偏向抛硬币计划的基础。 // CoinTosser_Homework4.cpp : Coin tossing program // nxt3 #include “stdafx.h” #include #include #define HEADS 0 #define TAILS 1 int rand_int(int a, int b) { return rand() % ((b – a + 1) + a); } int main() { int tosses = 0, min = […]

如何使用nanosleep睡眠随机时间?

我试图使用nanosleepfunction让我的进程在1/10秒之间随机hibernate一段时间? 我使用srand()为我的随机数生成器播种,使用进程ID,即im调用: srand(getpid()); 然后使用 struct timespec delay; delay.tv_sec = 0; delay.tv_nsec = rand(); nanosleep(&delay, NULL); 我怎样才能确保我睡觉0..1 / 10秒?

C中的rand()有多独特?

我使用rand()表示需要唯一值的6位字段。 我做得对吗? 什么是赔率, rand()可以在连续或频繁的通话中给我类似的值? 当我使用rand()时它是独一无二的。 但是,当我调用srand(time(NULL))或srand(clock())时返回相同的数字。 似乎,就像它对我而言正好相反。 或者是吗?