2016-07-28 153 views
-3

我想將我生成的一個隨機數傳遞給一個int數組。我得到的東西,但它不正確。如何把隨機數放在int數組中C

由於提前,

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

int main() 
{ 
    int i, n; 
    time_t t; 

    n = 5; 

    int haystack [n]; 



    /* Intializes random number generator */ 
    srand((unsigned) time(&t)); 

    /* Print 5 random numbers from 0 to 50 */ 
    for(i = 0 ; i < n ; i++) 
    { 
     printf("%d\n", rand() % 50); 
     haystack[i] = rand(); 
     printf("%d\n", haystack[i]); 

    } 

    return(0); 
} 
+6

什麼是_not right_? – LPs

+0

int haystackp []打印數字,但不是我用srand時間和rand生成的數字,直到數字50爲止。它用自己的種子生成自己的數字。 – Bejns

+0

你正在調用rand()兩次,你會得到兩個不同的隨機數。如果您想重複使用隨機數,請將其存儲在變量中,並在打印和賦值語句中重複使用。 – dubes

回答

2

此打印隨機數< 50:printf("%d\n", rand() % 50);

這產生新的隨機數,沒有這樣的限制:haystack[i] = rand();

沒有理由對它們進行等於。

我猜你想要的東西,如:

haystack[i] = rand() % 50; 
printf("%d", haystack[i]) 
0

撇開問題與unitialised變量t,你在你的printf那麼你在haystack存儲使用不同的隨機值。

/* Print 5 random numbers from 0 to 50 */ 
    int rand = 0; 
    for(i = 0 ; i < n ; i++) 
    { 
     rand = rand() % 50; 
     printf("%d\n", rand); 
     haystack[i] = rand; 
     printf("%d\n", haystack[i]); 

    } 
2

問題是,每次撥打rand都會給您一個新的/「不同」的值。

首先分配到陣列的數量,然後打印

/* Print 5 random numbers from 0 to 50 */ 
    for(i = 0 ; i < n ; i++) 
    { 
     haystack[i] = rand() % 50; 
     printf("%d\n", haystack[i]); 

    } 
0

看行給我,但你的意思是打印不同rand()到你在haystack存儲一個?

您可以通過for循環體塌陷到單個語句

printf("%d\n", haystack[i] = rand() % 50);

0
printf("%d\n", rand() % 50); 
    haystack[i] = rand(); 
  1. 您正在使用蘭特()兩次,第一次在printf和未來在分配解決這個問題。

    所以每次rand()都會生成不同的值,所以不會等於先前的值。

  2. 在printf()rand()中,%50將給出小於50的值,但在賦值操作中它可能會超過50個,因此請注意它。但仍然傾向於只在一次賦值中使用rand()一次。

希望這將有助於