Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 生成一个介于1和N-1之间的随机数_C_Random - Fatal编程技术网

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

查看此链接:-

提示:寻找一个返回随机数的函数,并使用模运算符
不适用于加密应用或科学应用
,从问题和上下文来看,我认为我们不必担心这一点当然,但这只是为了防止有人用这个答案来做其他事情:-)简单明了。我喜欢它