楼主 jackeroo |
上述代码在A1中输入,并下拉到第50行,按F9刷新测试。 |
2楼 jackeroo |
A1中输入公式:
请大家讨论! |
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开始生成随机数怎么做啊? |