srand()与rand()函数的问题
答案:3 悬赏:80 手机版
解决时间 2021-04-05 05:25
- 提问者网友:謫仙
- 2021-04-04 22:11
srand()与rand()函数的问题
最佳答案
- 五星知识达人网友:一秋
- 2021-04-04 22:38
#include
#include
#include
main()
{
int x;
srand((int)time(NULL));
x=rand()%10+1;
printf("%d",x);
}
//随即产生min-max 的话 语法为 rand()%(max-min+1)+min追问srand((int)time(NULL));是取得系统时间
我想自定义种子应该没错吧!
rand()%10+1;我只得知道可以,为什么我这样写不对?追答你那个是matlab里面的写法吧 c语言没那么写的
还有因为你每次中的种子都是一样的所以产生的结果都一样 你要产生不同结果的话就要设置不同种子追问rand(1,10);
这样写,系统不报错~
但是就是数字不对
那取系统时间和自定义时间有区别吗?追答系统时间的话每次时间都是不一样的呀 所以可以产生不同的伪随机素 你自定义一个
srand(1000);产生的永远是同一个随机数追问但是这语句总是执行一次,即使每次都要重载,那效果也应该一样的~追答重载以后你的1000没有变啊 自变量没有变 函数结果会变?
随机数是通过一个特定的数学运算得到的追问哦~这样。
有什么办法可以实现随机生成1-35的数字,而没有重复吗?
不用筛选的语句追答不可能吧 要筛选 学了这么多年 编写了这么多程序 还没看到过 应该都要加筛选条件的
#include
#include
main()
{
int x;
srand((int)time(NULL));
x=rand()%10+1;
printf("%d",x);
}
//随即产生min-max 的话 语法为 rand()%(max-min+1)+min追问srand((int)time(NULL));是取得系统时间
我想自定义种子应该没错吧!
rand()%10+1;我只得知道可以,为什么我这样写不对?追答你那个是matlab里面的写法吧 c语言没那么写的
还有因为你每次中的种子都是一样的所以产生的结果都一样 你要产生不同结果的话就要设置不同种子追问rand(1,10);
这样写,系统不报错~
但是就是数字不对
那取系统时间和自定义时间有区别吗?追答系统时间的话每次时间都是不一样的呀 所以可以产生不同的伪随机素 你自定义一个
srand(1000);产生的永远是同一个随机数追问但是这语句总是执行一次,即使每次都要重载,那效果也应该一样的~追答重载以后你的1000没有变啊 自变量没有变 函数结果会变?
随机数是通过一个特定的数学运算得到的追问哦~这样。
有什么办法可以实现随机生成1-35的数字,而没有重复吗?
不用筛选的语句追答不可能吧 要筛选 学了这么多年 编写了这么多程序 还没看到过 应该都要加筛选条件的
全部回答
- 1楼网友:一叶十三刺
- 2021-04-05 00:18
编辑本段C语言函数名
简介
功 能::伪随机数发生器 所属库:stdlib.h 用 法: 需要先调用srand初始化,一般用当前日历时间初始化随机数种子,这样每次执行代码都可以产生不同的随机数。
函数原型:int rand(void); //看这里
相关函数:srand、time、GetTickCount
程序例
#include "stdio.h"
#include "stdlib.h"
int main(void)
{
int i; printf("Ten random numbers from 0 to 99\n\n");
for(i=0; i<10; i++)
printf("%d\n", rand() % 100);
return 0;
}
简介
功 能::伪随机数发生器 所属库:stdlib.h 用 法: 需要先调用srand初始化,一般用当前日历时间初始化随机数种子,这样每次执行代码都可以产生不同的随机数。
函数原型:int rand(void); //看这里
相关函数:srand、time、GetTickCount
程序例
#include "stdio.h"
#include "stdlib.h"
int main(void)
{
int i; printf("Ten random numbers from 0 to 99\n\n");
for(i=0; i<10; i++)
printf("%d\n", rand() % 100);
return 0;
}
- 2楼网友:我住北渡口
- 2021-04-05 00:09
rand不是这样用的!srand里面的种子就是为了在每次产生不同的随机数追问rand()函数语法不是int rand(int min,int max)吗?
随机产生min-max之间的数字追答要产生1-10之间的随机数可以这样写:x=rand()%10+1;
srand里面的种子就是产生随机数的一个引子...
为了在每次产生不同的随机数 应该把实时时间作为种子。追问srand((int)time(NULL));是取得系统时间
我想自定义种子应该没错吧!
rand()%10+1;我只得知道可以,为什么我这样写不对?追答自定义种子也可以,但每次产生的随机数还是会一样!在VC6中rand函数没有重载,只有这一个使用形式追问我用的codeblock
那为什么rand(1,10);
不对呢?追答那就不知道了...我没有用过codeblock追问VC貌似也可以~
int rand(int min,int max)有这个用法的追答没有,我查过MSDN追问~~~
我知道上查的~
那是标准的原因?追答百度知道上查的也要分清是属于那个编译器的标准,而MSDN就是VC编译器的标准文档追问那有什么办法可以随机生成1-35的数字7个,要无重复的
不写判断重复的语句可以实现吗?
随机产生min-max之间的数字追答要产生1-10之间的随机数可以这样写:x=rand()%10+1;
srand里面的种子就是产生随机数的一个引子...
为了在每次产生不同的随机数 应该把实时时间作为种子。追问srand((int)time(NULL));是取得系统时间
我想自定义种子应该没错吧!
rand()%10+1;我只得知道可以,为什么我这样写不对?追答自定义种子也可以,但每次产生的随机数还是会一样!在VC6中rand函数没有重载,只有这一个使用形式追问我用的codeblock
那为什么rand(1,10);
不对呢?追答那就不知道了...我没有用过codeblock追问VC貌似也可以~
int rand(int min,int max)有这个用法的追答没有,我查过MSDN追问~~~
我知道上查的~
那是标准的原因?追答百度知道上查的也要分清是属于那个编译器的标准,而MSDN就是VC编译器的标准文档追问那有什么办法可以随机生成1-35的数字7个,要无重复的
不写判断重复的语句可以实现吗?
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯