使用函数指令可以完成。
单元格=ROUNDDOWN((RAND()99999999),0)
按F9刷新即变化随机8位数
ROUNDDOWN(number,num_digits)
Number 为向下舍入的任意实数。这个参数用的不多。
Num_digits 四舍五入后的数字的位数。这个参数用的不多。
rand()函数产生随机数的一个随机函数。
99999999这八位数的9代表单元格的随机数是8位且不大于99999999
最后一位0表示没有小数点,随机数为整数。
因为随机数函数是一个易失性函数,所以正如题主所说,生成的随机数会在每次打开文件时重新生成。其实,不只是打开文件时,而是工作表中有任何 *** 作,如输入数据后按回车键确定、筛选、排序按F9重新计算等,随机数都会重新生成。
要使随机函数生成的随机数不再发生变化,必须在公式中设置单元格在一定的条件下等于单元格本身,这就必须打开Excel的迭代计算(即Excel的循环引用)。所以要达到题主的目的,需要按如下步骤来做:
在选项的公式选项卡中,把“启用迭代计算”打上对勾后确定,以启用迭代。
假设需要生成的随机数在1~10之间,在B2中输入公式:
=IF($A1=""," ",IF(COLUMN()-1>$A1,"",IF(B2=" ",RANDBETWEEN(1,10),B2)))
右拉到若干个单元格(单元格个数大于或等于A1中可能输入的最大数字)
现在因为A1中没有输入内容,第1个IF为真,输入公式的单元格显示为空(注意空是一个空格——英文双引号中输入了一空格)
当在A1中输入数字时,第1个IF条件为假,则执行第2个IF,假设输入的数字是5,在B2~F2(不是题主所说的E2)中,第2个IF为假,执行第3个IF。显然第3个IF为真空,因为原来已赋值一个空格,于是生成一个1~10的随机数字;而在G2以后的单元格中,因为前面的数字个数已与A1相同,列数字-1后大于A1,所第3个IF条件为真,取空值(双引号中没内容——单元格显示为没空格的空)。
再来分析B2单元格,当工作表中有 *** 作时,易失性函数会发生变化,但公式中第3个IF的条件为假——B2单元格已有数字,不是一个空格,所取第3参数,即取B2值——也就是已取得的随机数——不再变化。这个B2是引用单元格本身——这就是Excel中的循环引用——所以输入公式前要进行步骤1的设置——启用迭代计算。C2~F2所有已取得的数字的单元格同样不再发生变化。
要重新生成随机数时,只要删除A1中的内容,使第2行填充了公式的单元格重新初始化——取得一个空格,再在A1中输入新的数字即可。
在VC中设计到随机数有两个函数
srand() and rand()
srand() 的作用是是一个种子,提供每次获得随机数的基数而已,rand()根据种子而产生随机数
注意
1:srand() 里的值必须是动态变化的,否则得到的随机数就是一个固定数
2:其实可以不用写srand() ,只用rand()就可以了,省事,简单,例子如下
如果我们想得到一个 0-60的随机数那么可以写成
int i;
i=rand()%60;
就可以了。
当然最好有个统一的标注如下:
int i;
srand((unsigned)time( NULL ));
i=rand()%60;
这样就OK了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)