随机生成字母数字组合 随机函数 随机函数-生成随机数字,随机函数-随机字母

随机函数就是产生数的函数,是EXCEL中很重要的函数,C语言里也有rand(),srand()等随机函数。

随机函数_随机函数 -生成随机数字

(1)生成随机数比较简单,=rand()即可生成0-RAND_MAX之间的随机数;(#define RAND_MAX 0x7fffu)

(2)如果要是整数,就用=int(rand()%10),表示0至9的整数,以此类推;

(3)如果要生成a与b之间的随机实数,就用=rand()%(b-a)+a,就能产生固定位数的整数了,以此类推;

注意:如果要使用函数rand()生成一随机数,并且使之不随

单元格计算而改变,可以在编辑栏中输入“=rand()”,保持编辑状态,然后按F9,将公式永久性地改为随机数。不过,这样只能一个一个的永久性更改,如果数字比较多,也可以全部选择之后,另外选择一个合适的位置粘贴,粘贴的方法是点击右键,选择“

选择性粘贴”,然后选择“数值”,即可将之前复制的随机数公式产生的数值(而不是公式)复制下来。

随机函数_随机函数 -随机字母

随机小写字母:=CHAR(INT(RAND()*26)+97)

随机大写字母:=CHAR(INT(RAND()*26)+65)

随机大小写混合字母:=CHAR(INT(RAND()*26)+if(INT(RAND()*2)=0,65,97))

有些情形下,我们需要生成一个不重复的随机序列。

比如:我们要模拟洗牌,将一副扑克牌去掉大小怪后剩下的52张打乱。

随机生成字母数字组合 随机函数 随机函数-生成随机数字,随机函数-随机字母

比较笨的方法是在1-52间每生成一个随机数后,检查该随机数是否出现过,如果是第一次出现,就放到序列里,否则重新生成一个随机数作检查。在 excel worksheet里面用这种办法,会造成if多层嵌套,不胜其烦,在VBA里面做简单一些,但是效率太差,越到序列的后端,效率越差。

当然也有比较好的办法,在VBA里面,将a(1)-a(52)分别赋予1-52,然后做52次循环,例如,第s次生成一个1-52间的随机数r,将a(s)与a(r)互换,这样的话,就打乱了原有序列,得到一个不重复的随机序列。

VBA里这个算法是很容易实现的,但是,出于通用性和安全考虑,有的时候我们并不希望用VBA,我们来看看在worksheet里面如何利用内置函数实现这个功能。

(1)在A1-A52间填入"=INT(RAND()*52)+1",产生1-52间的随机数,注意这里是有重复的

(2)在B1-B52间填入1-52

(3)在C54-BB54填入1-52

(4)在C1填入"=IF(ROW()=C$54,INDEX(B$1:B$52,INDEX($A$1:$A$52,C$54)),IF(ROW()=INDEX($A$1:$A$52,C$54),INDEX(B$1:B$52,C$54),B1))"。

分项解释:

a:ROW()=C$54,如果当前行等于当前交换所排的序号

b:INDEX(B$1:B$52,INDEX($A$1:$A$52,C$54)),返回在B1到B52中选择A1:A52中的第C54个值

c:IF(ROW()=INDEX($A$1:$A$52,C$54),否则的话,如果当前行等于A1:A52中第C54个值,则:

d:INDEX(B$1:B$52,C$54),返回B1:B52中的第C54个值

e:若以上条件都不满足,则返回B1

(5)将C1复制到C1:BA52这个区域里面

(6)在BA1:BA52中,我们就得到了一个不重复的随机序列,按F9可以生成一个新序列。

随机产生六位数字密码=INT(RAND()*(899999-10001))+100001

EXCEL生成前2位是大写字母,中间4位是小写字母,后两位是数字

=CHAR(65+INT(RAND()*16))&CHAR(65+INT(RAND()*16))&CHAR(97+INT(RAND()*16))&CHAR(97+INT(RAND()*16))&CHAR(97+INT(RAND()*16))&CHAR(97+INT(RAND()*16))&INT(RAND()*10)&INT(RAND()*10)

在A1中输入公式=rand()*100000,表示随机数乘以一个比较大的数,然后往下填充N个单元格。在B1中输入排序公式=rank(A1,A:A),双击填充,或往下填充N个单元格,B1到BN就是你所需要的N个不同随机数了

解释

#include

rand()

srand()

标准C库中函数rand()可以生成0~RAND_MAX之间的一个随机数,其中RAND_MAX 是stdlib.h 中定义的一个整数,它与系统有关。

rand()函数没有输入参数,直接通过表达式rand()来引用;例如可以用下面的语句来打印两个随机数:

printf("Random numbers are: %i %in",rand(),rand());

因为rand()函数是按指定的顺序来产生整数,因此每次执行上面的语句都打印相同的两个值,所以说C语言的随机并不是真正意义上的随机。

为了使程序在每次执行时都能生成一个新序列的随机值,我们通常通过为随机数生成器提供一粒新的随机种子。函数 srand()(来自stdlib.h)可以为随机数生成器播散种子。只要种子不同rand()函数就会产生不同的随机数序列。srand()称为随机数生成器的初始化器。

例程

文件名: rand_srand.c

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

/* This program generates and prints ten random integers between 1 and RAND_MAX*/

#include <stdio.h>

#include <stdlib.h>

int main ()

{

unsigned int seed ; /*申明初始化器的种子,注意是usigned int 型的*/

int k;

printf("Enter a positive integer seed value : n");

scanf ("%u",&seed);

srand(seed);

printf("Random Numbers are:n");

for(k = 1; k <= 10; k++)

{

printf("%i",rand());

printf("n");

}

return 0;

}

当提供的种子相同时,随机数序列也时相同的。而且当种子为1时,与不使用srand()函数时一样的,也就是说rand()函数默认情况下初始化种子值为1;

在stdlib.h 中这两个函数的原型是:

int rand();

void srand (unsigned int);

srand(time(0)); i=rand(); 这样i就是一个真正意义上的随机数。

原因

rand()产生伪随机数,srand函数提供种子,种子不同产生的随机数序列也不同,所以通常先调用srand函数 time(0)返回的是系统的时间(从1970.1.1午夜算起),单位:秒,种子不同当然产生的随机数相同几率就很小了。

  

爱华网本文地址 » http://www.413yy.cn/a/8103450103/100924.html

更多阅读

电脑键盘按字母显示数;按字母显示数字 键盘字母数字切换

电脑键盘按字母显示数;按字母显示数字——简介 明明按的是字母,却发现显示的是数字,怎么办?小编告诉你怎样解决。电脑键盘按字母显示数;按字母显示数字——工具/原料电脑电脑键盘按字母显示数;按字母显示数字——方法/步骤1

农业银行动态口令卡怎么用 精 银行动态口令卡怎么用

农业银行动态口令卡怎么用 精——简介动态口令是根据特定算法生成不可预测的随机数字组合,每个口令只能使用一次。动态口令认证技术被认为是目前能够最有效解决用户的身份认证方式之一,使用动态口令主要防止由于盗号而产生的财产损失,

笔记本键盘字母变数字/字母数字如何切换 笔记本键盘字母数字

据调查,目前使用笔记本的用户越来越多了,同时在使用笔记本的过程中遇到的问题也越来越多,就比如一个很简单的问题,某用户登陆QQ时不能登陆,提示密码验证错误(下图),试了很多次都无法登陆。叫我过去帮他看看是什么问题,我过去看了以后告诉他,其

声明:《随机生成字母数字组合 随机函数 随机函数-生成随机数字,随机函数-随机字母》为网友剑下孤魂分享!如侵犯到您的合法权益请联系我们删除