我有一個簡單的程序,以生成C.蘭特()行爲不理解
我使用rand()
此隨機數N對。 N的值是一個命令行參數。
我注意到,當傳遞的命令行參數相同時,它總是生成相同的數字流。
rand()
聯機幫助頁說,如果沒有明確的種子,則RNG隱式地按值1播種(在我的程序中沒有呼叫srand()
)。然而,當我用arg = 10調用我的程序,然後用arg = 12時,我應該看到兩個序列的前10個數字相等,對不對? (他們將使用相同的種子,即1)。這沒有發生。看起來這個種子是從隱含地通過的參數中導出和應用的,但這似乎不太可能。有任何想法嗎?
更新: [對不起,沒有張貼這早些時候]
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int objs=100, i;
if (argc >= 2)
objs = atoi(argv[1]);
for(i=0; i<objs; i++){
int p = rand() % objs;
int q = rand() % objs;
printf("%d %d\n", p, q);
}
return 0;
}
我使用Ubuntu 12和gcc 4.7.2。
我們不能調試我們看不到的程序。 –
請發佈代碼。 –
的#include 的#include INT主(INT的argc,字符* argv的[]){ INT OBJ文件= 100,I; if(argc> = 2) objs = atoi(argv [1]);對於(i = 0; i