2016-12-09 16 views
0

こんにちは私は、入力を求めるプロンプトを表示せずにrandnumberを格納する方法があることを知りたいです。Cランダムな配列の配列

#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; 
+0

あなたのループカウンタ 'i'は、あなたのコード内の任意の場所にインクリメントされていないよう。これがあなたのループのために何を意味すると思いますか? – Arc676

+0

16個の値をまったく同じ乱数にするか、各スロットに新しい乱数を生成しますか? – paddy

+0

@paddy異なる数字にすることができます –

答えて

2

Cで乱数を生成するための簡単な方法は<stdlib.h>が付属していますrand()機能を使用することです。この例では、ユーザは、例えばrandnumsを求めるプロンプトが表示されず、アレイstorerandで16 randnumbersを保存したいです。タイムライブラリをシードしないと、プログラムを実行するたびに同じ乱数が返されることに注意してください。

#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++; 
} 
1

あなたはここにランダムな値でrandnumを初期化:

randnum=rand(); 

そして、あなたはあなたの配列の各スロットに、その値を置くために、あなたのループを実行します。つまり、と同じの値を各スロットに入れています。

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

ソリューションは、ループ中にrand()を呼び出すことです:

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