如何通过递归函数产生大量随机数?必须递归实现。

JokerDuuuu 2014-05-04 06:15:08
如何通过递归函数产生,大量随机数,必须递归实现。
...全文
338 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
BeanJoy 2014-05-05
  • 打赏
  • 举报
回复
这明显是楼主使用随机函数的问题,不着手了解随时函数的使用,却想着法子用递归来实现,走了弯路。
赵4老师 2014-05-05
  • 打赏
  • 举报
回复
[code=c]#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
unsigned nextSeed(int level, int lastRandomNumber)
{
    return lastRandomNumber;
}
int generateRandom()
{
    return rand() % 100;
}
void recurse(int level, int limit, int lastRandomNumber)
{
    if(level > limit) return;
 
    //generate random number of current level
    int random = generateRandom();
    printf("random number in level %d is %d\n", level, random);
    //recurse to next level
    recurse(level + 1, limit, random);
}
 
int main()
{
    srand(time(NULL));
    recurse(1, 10, rand());
 
    return 0;
}
[/code]
还有多远 2014-05-04
  • 打赏
  • 举报
回复
多改几次发生器种子试试?

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

unsigned nextSeed(int level, int lastRandomNumber)
{
    return lastRandomNumber;
}
int generateRandom()
{
    return rand() % 100;
}
void recurse(int level, int limit, int lastRandomNumber)
{
    if(level > limit) return;

    //set rand seed in every level according to level and last random number
    srand(nextSeed(level, lastRandomNumber));
    //generate random number of current level
    int random = generateRandom();
    printf("random number in level %d is %d\n", level, random);
    //recurse to next level
    recurse(level + 1, limit, random);
}

int main()
{
    srand(time(NULL));
    recurse(1, 10, rand());

    return 0;
}
tbwork 2014-05-04
  • 打赏
  • 举报
回复
引用 2 楼 u011724402 的回复:
不要在意这个嘛。。。 想实现在一个矩形里随机漫步,到达漫步上限就退出递归,漫步我是通过递归实现的,但是递归的时候产生的随机数都是一样的,我很纳闷。。
要种子函数可以使用取系统时间的毫秒数做参数。 或者 用RDTSC 来获得时钟周期作为种子。 以前自己也写过一个随机数函数。 直接用 时钟周期数 % 范围
buyong 2014-05-04
  • 打赏
  • 举报
回复
引用 2 楼 u011724402 的回复:
不要在意这个嘛。。。 想实现在一个矩形里随机漫步,到达漫步上限就退出递归,漫步我是通过递归实现的,但是递归的时候产生的随机数都是一样的,我很纳闷。。
srand的值是不是一样? 你可以取系统时间
lm_whales 2014-05-04
  • 打赏
  • 举报
回复
1)库函数 srand,rand 2)伪随机数发生器原理,和随机数生成器的实现,自己写个随机数类
JokerDuuuu 2014-05-04
  • 打赏
  • 举报
回复
不要在意这个嘛。。。 想实现在一个矩形里随机漫步,到达漫步上限就退出递归,漫步我是通过递归实现的,但是递归的时候产生的随机数都是一样的,我很纳闷。。
tbwork 2014-05-04
  • 打赏
  • 举报
回复
结贴率。。。。 递归是一个形式, 随机数的产生是一行语句。 不知道你具体的需求是神马。。。

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧