我想将生成的随机数传递给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);
}
答案 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();
您正在使用rand()两次,首先是printf,然后是next。
因此每次rand()都会生成不同的值,使其不等于之前的值。
在printf()中,rand()%50将给出小于50的值,但在赋值操作中它可能超过50,所以要小心。但仍然喜欢只在一次作业中使用rand()。
希望这会有所帮助