【问题标题】:C Array of Random Numbers StorageC 随机数存储数组
【发布时间】:2016-12-09 03:39:23
【问题描述】:

您好,我想知道有没有一种方法可以在不提示用户输入的情况下存储 randnumber。在此示例中,我们希望用户在数组storerand 中存储 16 个随机数,而不提示用户输入随机数,例如:

#include<stdio.h> 
#include<stdlib.h> 
void main() {
    int randnum;
    int i=0;
    int storerand[16]; // storing randnumbers 
    randnum=rand();

        while(i <16){
            storerand[i]=randnum; // why is this not storing 16 rand number how can i store 16 randnumbers 
         i++;
        }
        return 0;

【问题讨论】:

  • 您的循环计数器i 似乎在您的代码中的任何地方都没有增加。你认为这对你的循环意味着什么?
  • 您希望这 16 个值是完全相同的随机数,还是要为每个插槽生成一个新的随机数?
  • @paddy 他们可以是不同的数字

标签: c c99 c89


【解决方案1】:

在 C 中生成随机数的一个简单方法是使用 &lt;stdlib.h&gt; 附带的 rand() 函数。请注意,如果您不使用时间库播种,则每次运行程序时都会收到相同的随机数。

#include <stdlib.h>
#include <time.h>

int main (void) {
    //Uses system time to seed a proper random number.
    srand(time(NULL));
    //rand() generates a random integer
    int a = rand();
    //Use mod to restrict range:
    int b = rand()%5; //random integer from 0-4
    return 0;
}

您还需要确保在 while 循环中增加索引 i。

while(i < 16) {
    storerand[i] = rand(); 
    i++;
}

【讨论】:

    【解决方案2】:

    你在这里用一个随机值初始化randnum:

    randnum=rand();
    

    然后您运行循环将其值放入数组的每个插槽中。这意味着您将 same 值放入每个插槽。

    while(i <16){
        storerand[i]=randnum;
        i++;
    }
    

    解决方法是每次循环调用rand():

    for( i = 0; i < 16; i++ ) {
        storerand[i] = rand();
    }
    

    【讨论】:

      猜你喜欢
      • 2016-06-05
      • 2015-12-31
      • 2022-01-12
      • 1970-01-01
      • 1970-01-01
      • 2015-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多