如何将随机数放在int数组C中

时间:2016-07-28 09:59:14

标签: c

我想将生成的随机数传递给int数组。我得到的东西,但它不对。

提前致谢,

#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);
}

5 个答案:

答案 0 :(得分:2)

这打印随机数&lt; 50:printf("%d\n", rand() % 50);

这会生成没有此类限制的新随机数:haystack[i] = rand();

他们没有理由保持平等。

我想你想要这样的东西:

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

答案 1 :(得分: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]);

   }

答案 2 :(得分:0)

不考虑使用单元化变量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]);

   }

答案 3 :(得分:0)

对我来说没问题,但是你的意思是打印一个与rand()中存储的haystack不同的for吗?

您可以通过将printf("%d\n", haystack[i] = rand() % 50);循环体折叠到单个语句

来解决此问题

body {} video { position: relative;} video:after { content: ''; opacity: 0.6; position: absolute; left: 0; top: 0; width: 100%; height: 100%; }

答案 4 :(得分:0)

  printf("%d\n", rand() % 50);
  haystack[i] = rand();
  1. 您正在使用rand()两次,首先是printf,然后是next。

    因此每次rand()都会生成不同的值,使其不等于之前的值。

  2. 在printf()中,rand()%50将给出小于50的值,但在赋值操作中它可能超过50,所以要小心。但仍然喜欢只在一次作业中使用rand()。

  3. 希望这会有所帮助