2012-03-14 206 views
2

可能重复:
Generating random numbers in C
using rand to generate a random numbers为什么rand()总是返回相同的值?

我试图生成随机数,但我不断收到数41 什么可能会在这样的错一个简单的片段?

#include <stdio.h> 
#include <stdlib.h> 

int main(void) 
{ 
    int a = rand(); 
    printf("%d",a); 
    return 0; 
} 

感谢您的帮助。

+1

这已经被问过无数次的SO;搜索“C中的随机数”将提供许多答案。我连接的那个和你一样制作'41'完全一样。 – 2012-03-14 22:15:30

+0

我很确定41是随机选择的。我只是试图挑选一个随机数,并没有得到41. – 2012-03-14 22:15:40

+6

如此接近。 42会更好... – 2012-03-14 22:16:31

回答

9

你需要给不同的种子,例如:

#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 
int main(void) 
{ 
    int a; 
    srand (time(NULL)); 
    a = rand(); 
    printf("%d",a); 
    return 0; 
} 
2

您需要种子发生器。

这是预期的。原因是结果的可重复性。假设您使用随机序列进行一些测试,并且经过特定时间或迭代后您的测试失败。如果你保存种子,你可以重复测试来复制/调试。种子与当前时间从毫秒的纪元,你得到随机随意(如果你认为你需要重复结果保存种子)。

+0

当我使用(让我们说:12)srand (12)之前,数字发生了变化,但仍然保持不变 – Umut 2012-03-14 22:16:30

+0

@UmutŞenaltan:种子具有相同的值将*创建相同的随机序列。请参阅https://en.wikipedia.org/wiki/Pseudorandom_number_generator – 2012-03-14 22:18:16

+1

这是预期的。原因是结果的可重复性。假设您使用随机序列进行一些测试,并且经过特定时间或迭代后您的测试失败。如果你保存种子,你可以重复测试来复制/调试。种子与当前时间从毫秒的纪元,你得到随机随意(如果你认为你需要重复结果保存种子)。 – Java42 2012-03-14 22:21:31

相关问题