C 生成一个介于1和N-1之间的随机数
可能重复:C 生成一个介于1和N-1之间的随机数,c,random,C,Random,可能重复: 如何生成介于1和N-1之间的随机数,其中N是用户输入的数字 到目前为止,我的代码是: #include <stdio.h> #include <stdlib.h> int main() { int number = 0; //number variable printf("This program will ask you for a number, an integer, and will print out a random num
如何生成介于1和N-1之间的随机数,其中N是用户输入的数字 到目前为止,我的代码是:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int number = 0; //number variable
printf("This program will ask you for a number, an integer, and will print out a random number from the range of your number 1, to N-1.");//output that explains the program's purpose and use to the user.
//gets the input
fgets(buffer, sizeof(buffer), stdin);
sscanf(buffer, "%d", &number); //gets the input and stores it into variable number
return (0);
#包括
#包括
int main()
{
int number=0;//number变量
printf(“此程序将要求您输入一个数字,一个整数,并将输出一个从数字1到N-1的随机数。”);//向用户解释程序用途的输出。
//获取输入
fgets(缓冲区、sizeof(缓冲区)、stdin);
sscanf(缓冲区,“%d”,&number);//获取输入并将其存储到变量number中
返回(0);
}您需要查看。一点数学知识,你就有了一个解决方案。这里是随机参考的链接 你可以用 num=rand()%n+1 根据您希望数字的“随机”程度,您可以使用标准libc中的
rand()
函数。此函数将生成介于0和RAND_MAX之间的数字。然后可以使用模运算在良好范围内获得结果
请注意,此生成器(LCG)既不适用于加密应用,也不适用于科学应用
如果您想要更合适的生成器,请查看诸如Mersenne Twister之类的生成器(但仍然不是cryptosecure)。尝试以下方法:-
unsigned int
randomr(unsigned int min, unsigned int max)
{
double x= (double)rand()/RAND_MAX;
return (max - min +1)*x+ min;
}
查看此链接:-提示:寻找一个返回随机数的函数,并使用模运算符
不适用于加密应用或科学应用
,从问题和上下文来看,我认为我们不必担心这一点当然,但这只是为了防止有人用这个答案来做其他事情:-)简单明了。我喜欢它