求一个特定区域内产生随机数不重复的算法.具体是这样的:区域是一个从0开始的“0、1、2、……、9、10、……46、47、……x、y”的等差为1的连续数列,数列项数不确定.在这个数列范围内,产
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/18 01:35:23
求一个特定区域内产生随机数不重复的算法.具体是这样的:区域是一个从0开始的“0、1、2、……、9、10、……46、47、……x、y”的等差为1的连续数列,数列项数不确定.在这个数列范围内,产
求一个特定区域内产生随机数不重复的算法.具体是这样的:
区域是一个从0开始的“0、1、2、……、9、10、……46、47、……x、y”的等差为1的连续数列,数列项数不确定.
在这个数列范围内,产生一个随机数,再产生一个,再产生一个……,不是一下产生好多来,而是一个一个出来.要求每产生一个随机数,都不能和以前产生过的重复,比如范围是1=10,第一次产生的随机数是3,第二次就不能是3,假设是5,那么第三次产生的就不能是3和5了,假设是8,那么第四次产生的就不能是3、5、8……,也就是每一次产生的范围都在缩小,直到这个数列中的数字完全被出现过为止.
求这种算法,不要给代码,把算法说清楚就可以了.
各位大仙一定要说清楚,说详细啊……
每次必须产生符合条件的随机数,跳过的方法不行。
要求每次产生都是独立的,而不是一把输出
求一个特定区域内产生随机数不重复的算法.具体是这样的:区域是一个从0开始的“0、1、2、……、9、10、……46、47、……x、y”的等差为1的连续数列,数列项数不确定.在这个数列范围内,产
就是相当于n个数全排列
n个数每一种排列都对应产生一种数的出现的方法
答案n!
如果说是后产生的随机数若和前面产生的数相同则不显示,如何?
1。做一个数组,先按顺序将这个数列方入数组里
2。随机抽取数组中的2个数字对换位子
不停的重复2。n次(n越大越好)
3。再按顺序从数组里把每一个元素输出出来就可以了。
我写过的,不过先问一下你是要思路还是要算法,要算法就说一下用什么语言.
我先说一下思路,
先做一个数列,或者说Array,
数列中有你所说的比如m个数,
然后根据Random函数产生一个m以内的随机数n
然后输出Array中的第n个数
从Array中删除第n个数,
然后根据Random函数产生一个m-1以内的随机数n
然后输出Arra...
全部展开
我写过的,不过先问一下你是要思路还是要算法,要算法就说一下用什么语言.
我先说一下思路,
先做一个数列,或者说Array,
数列中有你所说的比如m个数,
然后根据Random函数产生一个m以内的随机数n
然后输出Array中的第n个数
从Array中删除第n个数,
然后根据Random函数产生一个m-1以内的随机数n
然后输出Array中的第n个数
从Array中删除第n个数,
然后根据Random函数产生一个m-2以内的随机数n
然后输出Array中的第n个数
从Array中删除第n个数,
...
收起
解答如下:
像这种题目就是求全排列的类型。
现在你题目中有y个数字,
第一次抽取时,共有y个数字可供选择,因此有y种可能性。
第二次抽取时,因不能重复,所以共有y-1个数字可供选择,因此有y-1种可能性。
第三次抽取时,也因不能重复,所以只有y-2个数字可供选择,因此有y-2种可能性。
根据上面可以类推出第四次,第五次……第y次
因此具体的答...
全部展开
解答如下:
像这种题目就是求全排列的类型。
现在你题目中有y个数字,
第一次抽取时,共有y个数字可供选择,因此有y种可能性。
第二次抽取时,因不能重复,所以共有y-1个数字可供选择,因此有y-1种可能性。
第三次抽取时,也因不能重复,所以只有y-2个数字可供选择,因此有y-2种可能性。
根据上面可以类推出第四次,第五次……第y次
因此具体的答案就为:y*(y-1)*(y-2)*(y-3)……*{y-(y-1)} = y!
收起