- 浏览: 146462 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
lyaqys:
lz实现的OptimisticExclusiveLock有点问 ...
java park/unpark 【java并发】基于JUC CAS原理,自己实现简单独占锁
package tt;
import java.util.*;
/**
* 首先看一下这个程序的工作原理:
通过这句命令首先得到的六个数是:
8 5 12 12 15 0
然后,通过new Random(-147909649).nextInt(27)得到的6个数是:
23 15 18 12 4 0
这样一来,根据:sb.append((char) (‘`’+n)); 得到:
8 + 96 = 104 --> h
5 + 96 = 101 --> e
12 + 96 = 108 --> l
12 + 96 = 108 --> l
15 + 96 = 111 --> o
23 + 96 = 119 --> w
15 + 96 = 111 --> o
18 + 96 = 114 --> r
12 + 96 = 108 --> l
4 + 96 = 100 --> d
整个程序的执行就是这样。
关于这个程序的运行原理的解释,最置顶的一个回复如下:
“如果java.util.Random是被一个具体的数字做为“随机数种子”而实例化(在本例中是-229985452和-147909649),
那么该实例就会以这个随机数种子作为随机算法产生随机数的基础。
* @author aircoder
*
*/
public class HelloWorld{
public static String randomString(int i)
{
Random ran = new Random(i);
StringBuilder sb = new StringBuilder();
for (int n = 0; ; n++)
{
int k = ran.nextInt(27);
if (k == 0)
break;
sb.append((char)('`' + k));
}
return sb.toString();
}
public static void main(String[] args){
System.out.println(randomString(-229985452)+" "+randomString(-147909649)+"\t"+randomString(1));
// 结果永远是 hello world xasxhmejajppj
/**
* 如果java.util.Random是被一个具体的数字做为“随机数种子”而实例化(在本例中是-229985452和-147909649),那么该实例就会以这个随机数种子作为随机算法产生随机数的基础。
使用同样的种子实例化的Random对象,每次运行时将会遵循同一种模式,产生同样的序列。”
这就是为什么每次运行该程序都会产生同样的结果的原理啦~
Random类是一个产生伪随机数字的类,它的构造函数有两种,一个是直接New Random(),另外一个是New Random(Int32),前者是根据触发那刻的系统时间做为种子,来产生一个随机数字,后者可以自己设定触发的种子,一般都是用UnCheck((Int)DateTime.Now.Ticks)做为参数种子,因此如果计算机运行速度很快,如果触发Randm函数间隔时间很短,就有可能造成产生一样的随机数,因为伪随机的数字,
在Random的内部产生机制中还是有一定规律的,并非是真正意义上的完全随机。
*/
}
}
import java.util.*;
/**
* 首先看一下这个程序的工作原理:
通过这句命令首先得到的六个数是:
8 5 12 12 15 0
然后,通过new Random(-147909649).nextInt(27)得到的6个数是:
23 15 18 12 4 0
这样一来,根据:sb.append((char) (‘`’+n)); 得到:
8 + 96 = 104 --> h
5 + 96 = 101 --> e
12 + 96 = 108 --> l
12 + 96 = 108 --> l
15 + 96 = 111 --> o
23 + 96 = 119 --> w
15 + 96 = 111 --> o
18 + 96 = 114 --> r
12 + 96 = 108 --> l
4 + 96 = 100 --> d
整个程序的执行就是这样。
关于这个程序的运行原理的解释,最置顶的一个回复如下:
“如果java.util.Random是被一个具体的数字做为“随机数种子”而实例化(在本例中是-229985452和-147909649),
那么该实例就会以这个随机数种子作为随机算法产生随机数的基础。
* @author aircoder
*
*/
public class HelloWorld{
public static String randomString(int i)
{
Random ran = new Random(i);
StringBuilder sb = new StringBuilder();
for (int n = 0; ; n++)
{
int k = ran.nextInt(27);
if (k == 0)
break;
sb.append((char)('`' + k));
}
return sb.toString();
}
public static void main(String[] args){
System.out.println(randomString(-229985452)+" "+randomString(-147909649)+"\t"+randomString(1));
// 结果永远是 hello world xasxhmejajppj
/**
* 如果java.util.Random是被一个具体的数字做为“随机数种子”而实例化(在本例中是-229985452和-147909649),那么该实例就会以这个随机数种子作为随机算法产生随机数的基础。
使用同样的种子实例化的Random对象,每次运行时将会遵循同一种模式,产生同样的序列。”
这就是为什么每次运行该程序都会产生同样的结果的原理啦~
Random类是一个产生伪随机数字的类,它的构造函数有两种,一个是直接New Random(),另外一个是New Random(Int32),前者是根据触发那刻的系统时间做为种子,来产生一个随机数字,后者可以自己设定触发的种子,一般都是用UnCheck((Int)DateTime.Now.Ticks)做为参数种子,因此如果计算机运行速度很快,如果触发Randm函数间隔时间很短,就有可能造成产生一样的随机数,因为伪随机的数字,
在Random的内部产生机制中还是有一定规律的,并非是真正意义上的完全随机。
*/
}
}
发表评论
-
探索 Pexpect,第 2 部分:Pexpect 的实例分析
2013-08-19 11:08 1670原文: http://www.ibm.com/develope ... -
Sudo提权出现:xx用户不在 sudoers 文件中
2013-08-03 20:22 872Sudo提权出现:xx用户不在 sudoers 文件中 症状 ... -
表达式算法java实现
2013-07-22 22:46 636package bd; import java.util.Sc ... -
java语言判断一个列表是否存在重复
2013-06-24 19:50 1662/** 假如存在重复,一个节点最终会追上另外的一个节点 */ ... -
atoi源码
2013-05-14 19:32 1223原文: http://blog.csdn.net/eroswa ... -
为重负网络优化 Nginx 和 Node.js
2013-05-13 01:12 953原文:http://linux.cn/forum.php?mo ... -
《APUE》:线程和fork(父子进程锁)
2013-04-29 21:07 1108《Unix环境高级编程》这本书附带了许多短小精美的小程序,我在 ... -
多线程下慎用sigwait
2013-04-29 20:54 762原文:http://blog.chinaunix. ... -
ubuntu eclipse 问题
2013-04-05 03:30 741Eclipse 3.6 在 Ubuntu 10.04 下会出现 ... -
linux多线程之pthread_cancel结束线程(防止死锁)
2013-03-28 18:28 1185linux多线程之pthread_cancel结束线程 摘要: ... -
c++ 多线程编程的时候遇到了一个编译问
2013-03-27 15:22 789今天在进行多线程编程的时候遇到了一个编译问题:error: a ... -
socket参数详解:KeepAlive
2013-03-19 13:24 1088TCP协议中有长连接和短连接之分。短连接在数据包发送完成后就会 ... -
ehcache分布式例子
2013-03-19 11:52 606配置文件: recluster_ehcache_0.xml ... -
Voldemort — 分布式 key-value 存储系统
2013-03-19 00:40 948Voldemort — 分布式 key-value 存储系统 ... -
crontab中运行python程序出错,提示ImportError: No module named解决全过程
2013-03-11 16:18 1179原文地址:http://blog.csdn.net/langl ... -
Linux crontab
2013-03-08 18:27 1016crontab是Linux下最常用的计划任务服务。本文跟大家分 ... -
tinyxml 实例
2013-02-28 15:00 603tinyxml 实例 例子见附件 -
C++ 中char*,const char*,string 轉換
2013-02-26 11:34 10471. string转const char* string ... -
WARNING: source src1: skipped 14 document(s) with zero/NULL ids
2012-12-18 21:17 1902select 中缺少主键id -
libmysqlclient.so.15 is needed by .....
2012-12-18 16:22 1122libmysqlclient.so.15 is needed ...
相关推荐
继承的作用以及如何不用继承实现应该具有的功能
java大作业-聊天室,有待完善,慎用
加密的惨剧!慎用文件夹加密软件! 加密的惨剧!慎用文件夹加密软件!
把要删除的文件拖到这个文件上面即可。注意,这是强力删除。一定慎用,因为连垃圾箱都会没有的。
java的file rename方法 以前我一直以为File#renameTo(File)方法与OS下面的 move/mv 命令是相同的,可以达到改名、移动文件的目的。不过后来经常发现问题:File#renameTo(File)方法会返回失败(false),文件没有移动,...
易语言处理事件命令慎用时钟版源码,处理事件命令慎用时钟版
移动磁盘低格工具(慎用)移动磁盘低格工具(慎用)移动磁盘低格工具(慎用)
SQL和MSDE清理小程序(慎用),SQL和MSDE清理小程序(慎用),SQL和MSDE清理小程序(慎用),
冰冻精灵清除器慎用
慎用六大软件伤硬盘最终版.pdf
慎用防止窜货的方法.doc
一些要慎用DOS命令.docx
玩客云 灯光控制 容易烧主板 慎用
慎用资本弱化防范税务风险.docx
慎用抗生素 刻不容缓 (小品).docx
继承的方式,慎用 * 方式二:同步方法 * 将操作共享数据的方法声明为synchronized.即此方法为同步方法,能够保证当其中一个线程执行此方法 * 时,其他线程在外等待至此线程执行完此方法; * >同步当前的锁:this
保护电脑慎用六大软件伤硬盘
初中语文文摘生活老人慎用电子按摩器
初中语文文摘生活慎用何首乌治白发