2016-07-28 78 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()一次。

希望这将有助于