ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的酷贴 > 函数与公式 > 不用辅助列生成1-100随机不重复数,且按升序排列

不用辅助列生成1-100随机不重复数,且按升序排列

作者:绿色风 分类: 时间:2022-08-18 浏览:110
楼主
jackeroo
  1. =INT(2*(RAND()+ROW(A1))-1)


上述代码在A1中输入,并下拉到第50行,按F9刷新测试。
2楼
jackeroo
A1中输入公式:
  1. =INT(2*(RAND()+ROW(A1))-1)
下拉到50行,按F9测试。

请大家讨论!
3楼
xpm130
如此生成的数据大小层次太明显了,我以为这不是严格意义上的随机数.
4楼
habf2008


O(∩_∩)O~的确是这样
我以为最简单的方法
A列用RAND取随机数;B列用RANK得出随机数。
5楼
春雷
好帖,吸收了!
6楼
apolloh
有想法,但这个公式不能获取真正意义的随机值,因为运算结果数字的间隔都不超过3,而随机值不会有这个规律。
7楼
jackeroo
数字间隔可以改大的,比如把2改成3或更大,或者把2用公式代替是。
因为不用辅助列,也不用循环引用,也不用VBA,而且从A1开始,到现在没有别的好办法。
8楼
apolloh
如果2用随机值代替则以难保不重复。随机值不应该是按从小到达顺序排列的,这么排列就说明已经受到一定条件限制。
9楼
nocrying
呵呵,看题目偶就疑惑,随机值为什么会按升序排列
10楼
jackeroo
原理是分隔成不相容的数据段,就算换成10000,也不会重复。
11楼
jackeroo
我觉得还是理解清楚了公式再下结论为好。
12楼
apolloh
举个例子:

100以内随机取5个数:
=INT(2*(RAND()+ROW(A5))-1)
公式返回的最大数是:=INT(2*(1+5)-1)=11
也就是说数字之会在1-11内变化,而且有相对固定的间隔区间(1-2),要使5个数中出现12以上的数字是不可能的。而真正的随机数不会这样的,是任意的。
13楼
nocrying
“=INT(2*(RAND()+ROW(A1))-1)”分成不相容的数据段的结果就是1和2不能共存,3和4不能共存......
rand()的作用充其量只是控制加0或者1~~
14楼
jackeroo
是的。所以就想这个办法来生成随机数啊。
随机数也有广义和狭义之分啊。呵呵。

可以把2换成大的数值的啊,呵呵。

那不用辅助列,不用VBA,不用循环引用,从A1开始生成随机数怎么做啊?

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap