创造一个完全不可能重复的整数(以更新公式说明部分)
来源:互联网 发布:网络视频会议软件 编辑:程序博客网 时间:2024/05/18 22:40
考虑到某些直接需要结果的读者,我把结果公布在最前面(以下针对当前时间):
[(秒*分-秒+毫秒)*时-(秒*分-秒)]*天在一年中的位置 - 年
注:天在一年中的位置=今天是一年中的第几天
首先,我先举个例子,.net中的Random类提供了重载的构造函数,Random()和Random(int),后者的参数为一个种子,Random使用这个种子来生成伪随机数,理论上来说如果种子是不同的,Random可以生成相当随机的数字,如果参数为空.net会使用当前时间当做种子。
这时,如果有一个方法可以提供很大程度上不同的数字,就可以保证Random生成的数有相当程度的随机性,当然.net已经帮我们做了这件事,我们可以使用Random()构造函数,但是我们可以借助Random来讨论一下本文的主题。
.ner使用的是时间算法,这是一个相当好的解决方案,我们也可以参考这个方法。
解释一下上面提到的公式,首先使用当前的秒乘以分,可以得出一个数字,比如12分13秒,4分4秒,2分8秒,8分2秒,结果分别是156,16,16,16,后三者的结果是相同的,这是减去秒数,就变成了143,12,6,14,这样后三者就出现了变化,采用(秒*分-秒)的算法可以消除后三者这样类似时间的影响。把这个结果加上毫秒,就可以把这个数的生成间隔缩小到以毫秒为单位。
同理,下一本采用类似的方法乘以小时,再减去,就可以把时间周期放大的小时。天在一年中的位置是唯一的,那么乘上这个就得出了一年中唯一的一个数,再减去年份,就可以排除两年中可能相同的时间。
这种算法的问题在于,前面的计算理论上虽然每步的结果都是不同的,有可能在复合运算是产生相同的结果,但是由于有毫秒这个变量存在,把这种可能缩小到了可以忽略的地步上。
[(秒*分-秒+毫秒)*时-(秒*分-秒)]*天在一年中的位置 - 年
注:天在一年中的位置=今天是一年中的第几天
首先,我先举个例子,.net中的Random类提供了重载的构造函数,Random()和Random(int),后者的参数为一个种子,Random使用这个种子来生成伪随机数,理论上来说如果种子是不同的,Random可以生成相当随机的数字,如果参数为空.net会使用当前时间当做种子。
这时,如果有一个方法可以提供很大程度上不同的数字,就可以保证Random生成的数有相当程度的随机性,当然.net已经帮我们做了这件事,我们可以使用Random()构造函数,但是我们可以借助Random来讨论一下本文的主题。
.ner使用的是时间算法,这是一个相当好的解决方案,我们也可以参考这个方法。
- 首先讨论使用秒,构造Random(DateTime.Now.Second),测试这个对象就可以发现,生成10个有10个不同的随机数的数组,这样随机性是很弱的,在一秒内10个数组是完全一样的,可以推测如果连续生成10分钟的话,有多少种重合。
- 使用毫秒,这样的意义和秒差不多,生成的随机数间隔变成了毫秒,但是10秒内有多少个重复的毫秒大家可以想到,在推测到10分钟也是不能满足要求的。
解释一下上面提到的公式,首先使用当前的秒乘以分,可以得出一个数字,比如12分13秒,4分4秒,2分8秒,8分2秒,结果分别是156,16,16,16,后三者的结果是相同的,这是减去秒数,就变成了143,12,6,14,这样后三者就出现了变化,采用(秒*分-秒)的算法可以消除后三者这样类似时间的影响。把这个结果加上毫秒,就可以把这个数的生成间隔缩小到以毫秒为单位。
同理,下一本采用类似的方法乘以小时,再减去,就可以把时间周期放大的小时。天在一年中的位置是唯一的,那么乘上这个就得出了一年中唯一的一个数,再减去年份,就可以排除两年中可能相同的时间。
这种算法的问题在于,前面的计算理论上虽然每步的结果都是不同的,有可能在复合运算是产生相同的结果,但是由于有毫秒这个变量存在,把这种可能缩小到了可以忽略的地步上。
- 创造一个完全不可能重复的整数(以更新公式说明部分)
- 求一个整数的质因数的代码(核心部分)
- 返回一个实数的整数部分
- lua 取一个数字的整数部分
- lua 取一个数字的整数部分
- lua 取一个数字的整数部分
- lua 取一个数字的整数部分
- 经典非重复选择基础公式的推导(这里是一个循环)
- leetcode 321. Create Maximum Number 根据两个整数创造一个最大的数
- 一个公式来说明加接圈的作用和缺点
- 马云:用 10% 大脑创造出来的机器不可能毁灭人类
- 不可能的任务 (蔡学墉)
- 自右向左提取一个不重复的整数
- 整数的拆分问题(允许重复)
- 整数的拆分问题(不允许重复)
- 找出重复的整数
- (二)创造一个简单的ROS package
- (二)创造一个简单的ROS package
- 140行,搞定贪吃蛇(Java Applet)
- 使用 EJB 3.0 Java Persistence API 设计企业应用程序
- 5月8日——5月14日:新闻采访写作
- 不多说了
- 在动荡中为研制我国大型飞机奋斗了近20年,最后还是不能实现抱负。到后来他也悟出了中国要发展大民机决不是单凭技术人员的赤忱之心所能办到,还要取决于国家意志,终因积劳成疾,壮志未酬而英年早逝。
- 创造一个完全不可能重复的整数(以更新公式说明部分)
- 在整天的忙忙碌碌中,我们是否已经被时代淘汰了?
- J2ME 进度条与线程化模型实例解析
- 他只能作先驱者,不能享受胜利,这是中华人民共和国的悲哀!
- 屏幕右下角浮出式小消息窗口,透明式消失
- 笑死不犯法!中国惠普客服笑话
- TNS-03505: Failed to resolve name --不小心的错误!
- 如何判定你是否具备有学习Linux的素质
- IT程序员35岁后的三条活路