不相邻随机数问题

rockersz 2013-10-26 12:18:24
请教高手:在c语言中,如何生成10个范围在0-5000的不相邻随机整数,所谓不相邻指的是生成的任意两个随机数之差的绝对值要大于1 ,最好有源码。
...全文
366 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
modyaj 2013-10-26
  • 打赏
  • 举报
回复
每次生成随机数的时候 判断与前一个数的绝对值是否大于1 大于就加入记录表 不大于就直接丢弃 重新获取随机数
max_min_ 2013-10-26
  • 打赏
  • 举报
回复
多一次判断条件再取一次随机数就好了!
lm_whales 2013-10-26
  • 打赏
  • 举报
回复
只有10个用排除法也可以。 或者,每次把选取的数据,相邻的数据抽去,再随机抽取。
rockersz 2013-10-26
  • 打赏
  • 举报
回复
to wangliangffaflgh: 先谢谢你的回复, 这个算法能保证一定不相邻吗》
测试NULL 2013-10-26
  • 打赏
  • 举报
回复

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

int myrandom()
{
        srand(time(NULL));
        return (rand() % 100) + (rand() % 50);
}

int main(void)
{
        int i;
        for(i=1; i<=10; i++)
        {
                printf("%d\n", (i *  myrandom()) + (i+ myrandom()));
        }
        return 0;
}
一、实验名称 模拟操作系统的页面置换 二、实验目的 1、掌握操作系统的页面置换过程,加深理解页式虚拟存储器的实现原理。 2、掌握用随机数生成满足一定条件的指令地址流的方法。 3、掌握页面置换的模拟方法。 三、实验要求与提示 1、 采用一种熟悉的语言,如C、PASCAL或C++等,编制程序。 2、 模拟操作系统采用OPT、FIFO和LRU算法进行页面置换的过程。 3、 设程序中地址范围为0到32767,采用随机数生成256个指令地址,满足50%的地址是顺序执行,25%向前跳,25%向后跳。为满足上述条件,可采取下列方法:设d0=10000,第n个指令地址为dn,第n+1个指令地址为dn+1,n的取值范围为0到255。每次生成一个1到1024范围内的随机数a,如果a落在1到512范围内,则dn+1=dn+1。如果a落在513到768范围内,则设置dn+1为1到dn范围内一个随机数。如果a落在769到1024范围内,则设置dn+1为dn到32767范围内一个随机数。 4、 页面大小的取值范围为1K,2K,4K,8K,16K。按照页面大小将指令地址转化为页号。对于相邻相同的页号,合并为一个。 5、 分配给程序的内存块数取值范围为1块,2块,直到程序的页面数。 6、 分别采用OPT、FIFO和LRU算法对页号序列进行调度,计算出对应的缺页中断率。 7、 打印出页面大小、分配给程序的内存块数、算法名、对应的缺页中断率。 8、 分析页面大小和分配给程序的内存块数对缺页中断率的影响。分析不同的页面置换算法的调度性能。 9、 在上机实现该程序之后,要求写出实验报告,其中包括实验名称、实验目的、实验内容、程序的主要流程图、实验心得和主要源程序清单等。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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