【Python】利用当前时间、随机数产生一个唯一的数字

Python生成当前时间很简单,比Java的代码简短多了,Java产生时间具体详见《【Java】有关System.currentTimeMillis()的思考》(点击打开链接

具体代码如下:

#-*-coding:utf-8-*-
import datetime
now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
print now;

运行结果如下,输出当前的时间,时间格式根据strftime("%Y-%m-%d %H:%M:%S")而定,相应的格式,正如C语言的printf语句那样简单。

Python可以利用如下语句产生唯一的随机数:

import random;
print random.randint(0,100);#生成的随机整数n,其中0<=n<=100

据此,我们可以利用当前时间、随机数产生一个唯一的数字,用于一些上传文件,产生文件等场合,

考虑到极端情况,在1秒内有1000个用户上传文件,也不会出现冲突的最好情况,就是利用当前时间+0~1000的随机整数,构造一个随机数字:

唯一值得注意的是,拼接时间与字符串要转化成字符串才拼接,而不是直接相加,由于Python是没有变量声明的,直接相加则变成了数字之间的相加了。

同时注意,如果随机数随机到一个比10少的数字,应当在随机产生出来的数字前面补上一个0,使得产生的数字的位数是相同的。

具体代码如下:

#-*-coding:utf-8-*-
import datetime;
import random;
nowTime=datetime.datetime.now().strftime("%Y%m%d%H%M%S");#生成当前时间
randomNum=random.randint(0,100);#生成的随机整数n,其中0<=n<=100
if randomNum<=10:
    randomNum=str(0)+str(randomNum);
uniqueNum=str(nowTime)+str(randomNum);
print uniqueNum;

以下Python程序,将利用for设置10个测试用例来测试在一秒内产生的结果,代码如下:

#-*-coding:utf-8-*-
import datetime;
import random;
for i in range (0,10):
    nowTime=datetime.datetime.now().strftime("%Y%m%d%H%M%S");#生成当前时间
    randomNum=random.randint(0,100);#生成的随机整数n,其中0<=n<=100
    if randomNum<=10:
        randomNum=str(0)+str(randomNum);
    uniqueNum=str(nowTime)+str(randomNum);
    print uniqueNum;

得到的运行结果如下图,可以发生产生出来的数字没有一个是相同的:

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-29 13:25:38

【Python】利用当前时间、随机数产生一个唯一的数字的相关文章

Python利用带权重随机数解决抽奖和游戏爆装备问题

关于带权随机数 为了帮助理解,先来看三类随机问题的对比: 1.已有n条记录,从中选取m条记录,选取出来的记录前后顺序不管. 实现思路:按行遍历所有记录,约隔n/m条取一个数据即可 2.在1类情况下,还要求选取出来的m条记录是随机排序的 实现思路: 给n条记录,分别增加一列标记,值为随机选取的1至n之间的不重复数据. 3.区别于1,2类问题, 如果记录是有权重的,如何结合权重去随机选取. 比如A的权重为10, B的权重股为5, C的权重为1, 则随机选取4个时可能应该出现AABB. 第3类问题便是

c++利用当前时间取随机数,实现真正意义上的“随机数”

想要取随机数可以使用rand()函数,rand()函数可以实现随机取一个从0到最大随机数范围内的任意整数,最大随机数是确定的,例如想要在0~99之内随机取一个整数可以使用: int num=rand()%100 来实现,如果想要使取随机数的范围的起始值不从0开始,则在上式后面直接加一个你想要的整数,例如想要在10~100之内取一个随机数可以使用: int num=rand()%90+10 但是上述方法在一个程序中取的随机数是固定不变的,并不能达到我们想要的随机效果,因此我们可以利用系统时间来生成

生成唯一的随机数(时间+随机数)

package com.st.utils; import java.util.Random; /** *@Author Mr.Li *@Date 2018/3/10 23:42 *@Description 生成唯一的主键 随机数 * 格式 : 时间+随机数 * synchronized 为保证多线程时不重复 */ public class KeyUtil { public static synchronized String genUniqueKey(){ Random random = new

python之路-利用索引切片功能做一个简易的两个未知数的加法计算器,代码如下:

python之路-利用索引切片功能做一个简易的两个未知数的加法计算器,代码如下: #content = input('请输入内容:'),如用户输入:5 +9或 5 + 9 等,然后进行分割再进行计算. content = input('>>>').strip() #content 等于所输入的内容,strip:删除字符串左右两边的空格. index = content.find('+') ''' content内容中的两边的空格都删除了,但中间还有,现在我们只需要定位已知内容是加法,两边

python练习题:利用切片操作,实现一个trim()函数,去除字符串首尾的空格,注意不要调用str的strip()方法

方法一: # -*- coding: utf-8 -*- # 利用切片操作,实现一个trim()函数,去除字符串首尾的空格,注意不要调用str的strip()方法: def trim(s): while s[:1] == ' ': s = s[1:] while s[-1:] == ' ': s = s[0:-1] return s # 测试: if trim('hello ') != 'hello': print('测试失败!') elif trim(' hello') != 'hello':

Python 开发者节省时间的 10 个小技巧

Python 是一个美丽的语言,可以激发用户对它的爱.所以如果你试图加入程序员行列,或者你有点厌倦C++,Perl,Java 和其他语言,我推荐你尝试Python. Python有很多吸引程序员的功能 ,它易学,面向对象,字节码编译,免费且开源.还有运行时检查.完整快速的支持,可以执行各种任务的扩展. 高效的Python 在这篇文章,我想强调一些 Python 可以节约时间并最大限度地提高生产力的方面.在做准备时,我咨询了几个 Pythonists,他们最节省时间的技巧是什么?答案在这里… 1.

巧妙利用访问时间提取和重组代码的实践

说明 本文主要介绍巧妙利用访问时间提取和重组某嵌入式产品SDK代码的实践. 一  问题提出 目前产品平台为便于编译管理,要求各模块组织为include-source目录结构,分别存放头文件和源文件.但芯片厂家提供的SDK按功能划分为众多子目录,如subdir1(.c,.h)…subdirN(.c,.h)…Makefile,并将头文件和源文件一并存放在各子目录内. 此外,厂家SDK支持多种管理场景,通过选项开关编译不同的目录和文件.而产品硬件定板后管理场景固定,其他场景所涉及的代码将不再需要. 因

查询 Python 开发者节省时间的 10 个方法

Python 是一个美丽的语言,可以激发用户对它的爱.所以如果你试图加入程序员行列,或者你有点厌倦C++,Perl,Java 和其他语言,我推荐你尝试Python. Python有很多吸引程序员的功能 ,它易学,面向对象,字节码编译,免费且开源.还有运行时检查.完整快速的支持,可以执行各种任务的扩展. 高效的Python 在这篇文章,我想强调一些 Python 可以节约时间并最大限度地提高生产力的方面.在做准备时,我咨询了几个 Pythonists,他们最节省时间的技巧是什么?答案在这里… 1.

Python 开发者节省时间的 10 个方法

Python 是一个美丽的语言,可以激发用户对它的爱.所以如果你试图加入程序员行列,或者你有点厌倦C++,Perl,Java 和其他语言,我推荐你尝试Python. Python有很多吸引程序员的功能 ,它易学,面向对象,字节码编译,免费且开源.还有运行时检查.完整快速的支持,可以执行各种任务的扩展. 高效的Python 在这篇文章,我想强调一些 Python 可以节约时间并最大限度地提高生产力的方面.在做准备时,我咨询了几个 Pythonists,他们最节省时间的技巧是什么?答案在这里...