-
MySql随机生成一串不重复数字
2020-06-05 14:25:58利用MySql随机生成一串不重复数字 在项目中我们可能用到一串数字作为标记,例如批次,淘宝的订单号,这些标记是不可以重复的,今天利用Mysql数据库简单生成一下: 想到不重复我们第一时间想到时间戳,current_...利用MySql随机生成一串不重复数字
在项目中我们可能用到一串数字作为标记,例如批次,淘宝的订单号,这些标记是不可以重复的,今天利用Mysql数据库简单生成一下:
想到不重复我们第一时间想到时间戳,current_timestamp()这是MySql提供给我们的查看当前时间戳的方法。
然后我们只需要把时间戳转换成一串数据就可以了。unix_timestamp(data)传一个时间戳参数,就可以获得一串数字。
我们发现在同一秒钟时间戳是一样的,当在同一秒钟生成2个标识,就会出现重复,我们给生成时间戳的函数传个值current_timestamp(5),此时它会在秒的后面多出5位,根据实际需要给定参数。
再通过unix_timestamp(data)生成数字串,但此时数据中会多出一个小数点,我们可以用replace(原字符串,目标字符,替换字符),把小数点去掉,最终生成一串数字串。
在经常需要的情况下,我们可以自定义一个fn_getBatch()函数,可以通过select fn_getBatch()直接调
用。
-
ASP生成不重复随机数字的另类思路
2012-07-19 08:35:23前两天看到有人要编个考试系统,当时只是简单回了下用随机函数RND 实际一般需要从...'产生不重复随机数 function rndarray(istart,iend,sum) dim arrayid(),i,j,blnre,temp,iloop,eloop redim arrayid(sum-前两天看到有人要编个考试系统,当时只是简单回了下用随机函数RND
实际一般需要从数据库中随机提取N道题目。以下代码都基于VBS;
通常的编写类似这样的
'产生不重复随机数
function rndarray(istart,iend,sum)
dim arrayid(),i,j,blnre,temp,iloop,eloop
redim arrayid(sum-1)
i=0
iloop=0
eloop=0
blnre=false
randomize
do while i<sum
temp=int(rnd*(iend-istart+1)+istart)
if i=0 then
arrayid(0)=temp
i=i+1
iloop=iloop+1
elsefor j=0 to i-1
if arrayid(j)=temp then
blnre=true
iloop=iloop+1
exit for'这一句很重要,防止多余的循环
else
iloop=iloop+1
end if
nextif blnre=false then
arrayid(i)=temp
i=i+1
else
blnre=false
end ifend if
eloop=eloop+iloop
iloop=0
loop
rndarray=join(arrayid)&"循环次数:"&eloop
end functionresponse.write rndarray(1,10,5)&"<br>"'调用过程
PS。其中的iloop、eloop是为了计算循环次数而已。
以上,大多数人的都是用这种方法编写的,生成一个随机数,然后再和以前生成的做比较,判断是否可用;
但这不是一种AI的,或者说有效率的方法,为什么不用两个数组呢?
数组1,存放需要的字符串,或数字等,数组2存放生成的随机数;当每次随机生成中间变量temp的一个下标x,赋给数组2,然后从数组1中,去掉下标为x的数字,赋给中间变量temp;这样每生成一个随机数,就从数组1中拿掉这个数,下次再生成一个数就不会重复了,这种产生随机数的方法原理实际是从数组1中提取。
方法二
function rndstr(istart,iend,isum)
dim i,j,vntarray()
redim vntarray(iend-istart)
j=istart
for i=0 to iend-istart
vntarray(i)=j
j=j+1
nextdim vntarray2(),temp,x,y
redim vntarray2(isum-1)
y=iend-istart+1
x=0
temp=vntarray
do while x<isum
dim a
randomize
vntarray2(x)=temp(int(rnd*y))
a=" "&vntarray2(x)&" "
temp=split(trim(replace(chr(32)&join(temp)&chr(32),a," ")))
x=x+1
y=y-1
loop
rndstr=join(vntarray2)
end functionresponse.write rndstr(1,5,2)
这样,是不是更简单呢
展开一下,假如要生成随机字符串,包含字母数字时,仅需为数组1赋值时,用函数chr(num);
假设,需要做一个手机中奖的页面程序。
首先把值赋给数组1,可以130....~139....循环赋值,当然实际使用时从数据库中把已有的赋值,然后再随机提取赋给数组2;
最后,再修饰一下
temp=replace(join(array2),chr(32),"")
phone=left(temp,6)&"***"&right(temp,2)得到类似137648***58的结果
-
随机生成不重复的数据
2013-03-16 16:35:24前段时间有个抽奖的应用需要为每个用户生成一个小于10000的不重复的随机数。 当时的想法是: 获取所有(或部分)可以使用的随机数数组,然后根据数组的大小获取一个随机数,就可以得到一个不重复的随机数。 ...前段时间有个抽奖的应用需要为每个用户生成一个小于10000的不重复的随机数。
当时的想法是:
获取所有(或部分)可以使用的随机数数组,然后根据数组的大小获取一个随机数,就可以得到一个不重复的随机数。
今天突然想到个简单的解决办法,可以先将10000以内的所有数字随机打乱后插入到数据库,用户分配的时候,直接顺序获取就行了。逻辑简单了很多. -
php mysql 随机 不重复数据_php mysql 批量生成数据库中卡号不重复的办法,不需要一个一个验证卡号是否存在...
2021-02-08 22:27:36卡号是五位数,无规则生成的数字形式。2.数据库已有不详数量的卡号记录。之前的做法是,生成一个,查询一个,但是数量多的时候回出现卡顿。或者超过30秒。解决代码if(isset($_POST['act'])&&$_POST['act']==...已知,
1.卡号是五位数,无规则生成的数字形式。
2.数据库已有不详数量的卡号记录。
之前的做法是,生成一个,查询一个,但是数量多的时候回出现卡顿。或者超过30秒。
解决代码
if(isset($_POST['act'])&&$_POST['act']=='adds'){
$sql="insert into tb_member(MembCode,SourceStoreId,IsCheck) values";
$num_old = (int)$_POST['num'];
if($num_old<=10){
$num_new = 15;
}
if($num_old>10){
$num_new = $num_old*1.5;
$num_new = intval($num_new);
}
for($i=0;$i
getnewmembcodenew();
}
//把获取到的卡号数组分割成为本,拼接成in查询语句,取出相同卡号的数据
$member_code_str = implode("','",$MembCodes);
$member_code_str = "'".$member_code_str."'";
$member_code_str_sql = "select MembCode from tb_member where MembCode in (".$member_code_str.")";
$getnum=$Cls->getList($member_code_str_sql);
foreach ($getnum as $k=>$v){
$member_arr []= $v['MembCode'];
}
//把重复的去掉,并且取出需要的数量
$MembCodes = array_diff($MembCodes,$member_arr);
$MembCodes=array_slice($MembCodes,0,$num_old);
//拼接插入语句
foreach ($MembCodes as $v){
$sql.="('$v',$StoreId,1),";
}
$sql=trim($sql,',');
$is_ok=$Cls->Query($sql);
}
//卡号生成部分代码
$MembCodes=array();
function getnewmembcodenew(){
global $Cls,$MembCodes;
$rmcodes=mt_rand('10000','99999');
$MembCodes[]=$rmcodes;
return $rmcodes;
}
-
获取多个随机生成的不重复的6位数,不重复的6位数或8位数串
2017-09-05 18:50:45获取不重复的6位数字串或者8位数字串,保存在数据库中,下次获取的不能与之前的重复 -
随机生成唯一的7位数字,作为用户的唯一标识
2017-10-24 09:03:340-9之间的数字,随机生成一个7位数,保存入数据库,此数据不能和以前的数据重复,唯一性 -
生成固定长度不重复的随机字符串
2018-02-11 13:29:38问题 问题来自V2EX:如何生成固定长度唯一随机字符串?...串内容随机,不可被猜测,不可重复 目标数据量不超过一千万 不需要数据库 分析 其实重点在不需要数据库,否则直接用一个随机数生成器生成一千... -
python随机函数做小程序_指定范围内生成六个不重复的随机数,python一句话代码写法操作小程序数据库...
2020-12-05 07:02:31每个商品详情页下面随机展示同类目下的6个商品,要求6个商品都不重复,小程序要实现这样的效果,操作数据库即可,插入数据库的数据格式是这样的:a:6:{i:0;s:2:"{}";i:1;s:2:"{}";i:2;s:2:"{}";i:3;s:2:"{}";i:4;s:2:... -
Java根据唯一数字ID生成不重复多位邀请码的思考和实现(数字+字母)
2020-04-24 22:26:27Java根据唯一ID生成唯一邀请码 场景: 需要通过资料码,拿到数据库中的某个文件资源 ...我们发现进制数是不重复的,我们来看一下进制数 比如二进制, 二位二进制数可以表示 2^2个十进制数 [0,3] ... -
java生成不重复的字符串UUID
2020-07-13 21:23:28java生成不重复的字符串 使用场景 一个很小的知识知识点吧。数据库中的主键标识要求唯一不重复,二开发过程中可能因为主键标识会作为前端的一个节点标识也要求不能重复。这个时候从不同的表中拿出来的主键标识很大... -
生成4位不重复的字符串
2020-11-20 15:08:27实际的业务场景中需要生成4位不重复的字符串,这个场景比较特殊,不具有普遍性,正常场景的唯一单号都不会只有4位。 最先想到的是随机生成4位字符串,字符包括数字、大小写字母一共62位,基本可以满足使用要求,但是... -
随机id生成器
2017-12-15 10:28:58随机生成数字id,可以用于数据库主键id。ID生成器是指能产生不重复ID服务的程序,在后台开发过程中,尤其是分布式服务、微服务程序开发过程中,经常会用到,例如,为用户的每个请求产生一个唯一ID、为每个消息产生一... -
python生成重复随机数_在Python中生成非重复随机数
2021-02-04 06:45:29这里是我想要的:我需要Python生成一个简单的数字列表从0到1,000,000,000随机顺序,用于序列号(使用随机数,所以你不能知道已经分配了多少个或做计时攻击很容易,即猜测下一个会出现)。这些数字与连接到它们的信息... -
小小扎马-Java生成指定范围和跳过指定数字的代码
2014-10-23 18:50:49今天在做一个项目的时候,需要为用户随机生成一个四位编号,编号可以选择区间,并且可以跳过指定数字,另外不能和数据库中已存在的编码重复。刚开始的时候,我的做法是先依据0-9生成一个随机的四位数字,然后再... -
生成唯一随机码的方法及优缺点分析
2017-05-19 17:34:001. 自己写代码产生随机的数字和字母组合,每产生1个去数据库查询该随机码是否已存在,如果已存在,则重新产生,直到不重复为止。 优点:没发现有啥优点。 缺点:产生速度慢,数据库交互频繁。 2. guid,该... -
asp.net 产生唯一随机码的方法分析
2021-01-02 09:20:431. 自己写代码产生随机的数字和字母组合,每产生1个去数据库查询该随机码是否已存在,如果已存在,则重新产生,直到不重复为止。 优点:没发现有啥优点。 缺点:产生速度慢,还要查询数据库,当数据量大的时候,可能... -
【JAVA工具类】cn.hutool.core.util.RandomUtil,随机数生成,用它就够了!
2020-11-19 14:43:00前段时间做了一个项目的需求,很多地方都需要用到随机,比如从指定的数据集合中随机抽取一个,随机抽取几个不重复,从指定范围内随机生成固定小数位的数字等等。 对于涉及数据库的查询,mysql中有提供随机函数,但... -
无序唯一ID生成算法
2020-12-10 09:47:08这个方法应该最容易想到,GUID就是一个利用随机算法生成的128bit的随机数,并不保证前后生成的两个数字不相同,但由于长度足够长,所以生成的两个数字重复的概率非常小,可以认为是不会重复的。 然而这么长的数字并... -
求一段存储过程,向表中随机插入测试数据的
2017-07-03 06:18:50db2数据库,要向一个表中插入测试数据, 表中6个属性,只给前三个属性插入数据即可,都为...属性2 p2:17位数字,以10017开头,后12位随机生成即可 属性3 p3:32位不重复码 目标数据量 10亿条 分几批插入比较好? -
PHP生成唯一字符串的方法,产生唯一码的方法分析
2016-10-10 19:35:181. 自己写代码产生随机的数字和字母组合,每产生1个去数据库查询该随机码是否已存在,如果已存在,则重新产生,直到不重复为止。 优点:没发现有啥优点。 缺点:产生速度慢,还要查询数据库,当数据量大的... -
PHP根据id生成邀请码
2018-04-09 10:35:14方案一、id生成器本身就是一个不重复的数字,但长度过长还不美观,不符合邀请码的常用形式;$code = "{$userId}{$currentTime}"; 方案二、再有就是生成一个随机数,再从数据库里面查询看是否存在。缺点... -
exce生成随机数
2016-11-17 19:36:00有时候数据库没有数据,造数据...首先介绍一下如何用RAND()函数来生成随机数(同时返回多个值时是不重复的)。 如下图所示,在单元格中输入=RAND(),回车后单元格即返回了一个随机数字。 RAND()... -
JAVA-2015-04-24应该思考的东西
2015-04-27 15:07:071、随机生成1000个不重复的10000以内的数字; 2、随机生成1000个不重复的10000以内的数字,并将这些连接成一个字符串。 3、数据库集群,3个库中亿万级数据,如何从3个库中获取最新更新的3000条数据; ... -
jmeter好的东西
2015-09-17 14:21:00功能:这个函数是从某个数字段随机读取数据替换参数,可以利用在测试需要添加多条数据记录而且某些字段需要唯一性的测试脚本中,随机生成的参数是数字 作用:可以用来实现参数化http请求发送的参数,使得在... -
关于微博内容中的短地址ShortURL
2012-04-15 21:19:00看过新浪的短连接服务,发现后面主要有6个字符串组成,于是第一个想到的就是原来公司写的一个游戏激活码规则,也就是下面的算法2,26个大写字母 26小写字母,10个数字,随机生成6个然后插入数据库对应一个id,短连接... -
网上各种短网址算法应用的初步详细汇总
2011-08-12 08:51:00看过新浪的短连接服务,发现后面主要有6个字符串组成,于是第一个想到的就是原来公司写的一个游戏激活码规则,也就是下面的算法2,26个大写字母 26小写字母,10个数字,随机生成6个然后插入数据库对应一个id,短连接...