本文介绍了用C随机数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

 函数srand(时间(NULL));
  对于(i = 0; I< N;我++){
            为(J = 0; J&≤(N-1); J ++){
                一个[I] [J] = RAND();
            }
        }

我尝试生成随机数,但他们都是一样的...
我应该怎么办?

阵列声明:

  INT **一个;
INT I;
的printf(请输入数组大小);
scanf函数(%d个,&安培; N);A =(INT **)释放calloc(N,的sizeof(INT));
对于(i = 0; I< N;我++)
    一个由[i] =(INT *)释放calloc(N-1,sizeof的(INT));


解决方案

呼叫函数srand()的循环之外。您正在补种它的每一个迭代。

函数srand()等你拿这取决于输入随机数序列的不同种子随机数发生器。你的循环运行速度非常快,所以调用时间(NULL)总是返回相同的值。要重与每次迭代相同的随机序列。作为一般规则,只能叫函数srand()一旦你的程序。

  srand(time(NULL));
  for(i = 0; i < n; i++){
            for(j = 0; j < (n-1); j++){
                a[i][j] = rand();
            }
        }

I try to generate random numbers, but they are the same...What should i do?

Array declaration:

int** a;
int i;
printf("Enter array size: ");
scanf("%d", &n);

a = (int**)calloc(n, sizeof(int));
for(i = 0; i < n; i++)
    a[i] = (int*)calloc(n-1, sizeof(int));
解决方案

Call srand() outside of the loop. You are reseeding it every iteration.

srand() seeds the random number generator so you get a different sequence of random numbers depending on the input. Your loop runs very fast, so the call to time(NULL) always returns the same value. You are resetting to the same random sequence with every iteration. As a general rule, only call srand() once in your program.

这篇关于用C随机数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-20 02:53