Random numbers in C
 ZZU1   
   我尝试生成随机数,但它们是相同的…我三个EDOCX1不管怎样。   我该怎么办?   
      数组声明:   
   ZZU1  
		
		
- 您的第一个calloc调用应该是sizeof(int *),但您似乎在一个主机上工作,其中简单指针和int的大小相同(大多数架构都是这样)。
- 你基本上在给出答案后就编辑了你的问题,在某种程度上,这些答案不再与问题匹配,并以这种方式失效。请不要这样做。
 
	 
       呼叫srand()外的环。你是reseeding它每一个迭代。   </P >   
   srand()种子的随机数的发电机,你得到一个不同的随机数序列depending的输入。你的回路的游程甚快,所以呼叫的time(NULL)总是时返回同样的值。你是resetting到同样的随机序列,与每一个迭代。作为一个通用的规则,只有在呼叫srand()曾经在你的程序。   </P >   
		
		
- 同意,您(通常)不需要对随机数生成器进行多次种子设定。
- @BTA:没错,你不需要多次播种。重新植入"合适的"随机数生成器是另一回事,我的意思是任何用于安全的东西。
 
	 
      不要打电话srand()每一次通过循环beforehand想做就做一次。   </P >   
 
      常见问题解答15到20将兴趣。和我是tempted来创建一个新的标签设计等问题。   </P >   
		
		
- 可能创建一个题为"srand()如何影响随机数生成器的状态?",并在每次出现另一个细微变化时将其标记为副本;-)
- 是的,一个连续波版本。但是我们会复制所有的公司语言常见问题,不是吗?
- 是的,但它不可避免地会包含大量的常见问题解答副本(根据f的定义),无论您做什么,都会复制comp.lang.*常见问题解答。但是,除非问题被无情地标记为重复的问题,即使它们稍微改变了主题,它们最终得到的信息也会比现有的FAQ少(假设FAQ能够很好地覆盖它)。cw版的常见问题解答,也就是f-on-so,可以被标记为这样,并链接到语言faq和任何其他相关资源,并且可以以最一般的方式表达问题,以确保它们捕获最多的重复。或者别的什么。
- 我也在想些什么。将此讨论移至meta?
 
	 
       </P >
   </P >  
      srand函数,这是一个"种子"随机数的发电机。在案例的你不知道,在计算机上随机数的真的是随机的。效应,对电脑是有一个列表的随机数,这似乎在它,和你使用srand告诉它的启动,在那名单,与每个呼叫rand()回归到下一项的列表。   </P >   
   的原因是你写的srand(time(NULL))to get to start随机数在一些点,这并不是要去的是同一时间,每一个你运行的程序(除非该程序的启动,在同一时间)。   </P >   
   什么?你是做repeatedly这里是讲"程序的重新随机号码表.的同一点(因为时间是一样的每一次你去的一环)。移动呼叫的srand外环,和你将得到正确的结果。   </P >   
| 12
 3
 4
 5
 6
 7
 8
 
 | srand(time(NULL)); 
for( i = 0;  i <  n;  i++){         
        printf("%d", time( NULL)); 
        for( j = 0;  j < ( n-1);  j++){ 
            a[ i, j] = rand(); 
        } 
    } | 
   一次呼叫及外环。   </P >   
 
      你需要打电话srand()之前进入环。srand()初始化的radnom号发电机与给定的种子和generates独特的序列的随机数的方法,这种子。   </P >   
   你的环executes甚快,每一个呼叫的time(NULL)YIELDS的同一时间(测量在秒)hence你初始化随机数发生器以同样的种子,每一个循环迭代。   </P >   
      谢尔盖,你得到的是不安的错误信息与a[i,j]版,是因为这是一个理想有效的表达。在逗号操作符evaluates的子表达式从左到右键和值时返回的最后一个表达式。因此,写作是a[i,j]编号的a[j]。。。。。。。什么是你收到的是打印的值的指针的第j个矢量在你的矩阵。   </P >   
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 
 | int** a;
int  i;
printf("Enter array size:");
scanf("%d", & n);
if(  n < 1 ){
    printf("Size should be > 0 
 ");
    return
  NULL;
} 
a = (int**)calloc( n, sizeof(int));
for( i = 0;  i <  n;  i++) 
    a[ i] = (int*)calloc( n-1, sizeof(int)); | 
   这里是我的阵列…………………   </P >   
		
		
- 首先,您应该编辑您的文章以添加新信息。这个网站不像一个论坛。第二,我支持我的说法,即您的二维数组语法是错误的,在访问一个项时应该执行a[i][j]。下面是多维数组教程:functionx.com/cpp/lesson12.htm
- 编写C代码时不需要强制转换"(int**))"。
- 我喜欢江户记1(2),但没用……
 
	 
| 12
 3
 4
 5
 6
 
 | srand(time(NULL));
for( i = 0;  i <  n;  i++){
    for( j = 0;  j < ( n-1);  j++){ 
        a[ i, j] = rand();
    }
} | 
   好的物。号是同样的…………………   </P >   
		
		
- 这个a[i,j]语法是什么?您可能需要a[i][j],尽管您应该得到一个编译器错误,除非j是一个普通数组而不是像我确定的那样的二维数组。
- 我没有错误……但裸体者是一样的…
- 显示a的声明。