- 浏览: 153543 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
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 1719原文: http://www.ibm.com/develope ... -
Sudo提权出现:xx用户不在 sudoers 文件中
2013-08-03 20:22 913Sudo提权出现:xx用户不在 sudoers 文件中 症状 ... -
表达式算法java实现
2013-07-22 22:46 670package bd; import java.util.Sc ... -
java语言判断一个列表是否存在重复
2013-06-24 19:50 1694/** 假如存在重复,一个节点最终会追上另外的一个节点 */ ... -
atoi源码
2013-05-14 19:32 1262原文: http://blog.csdn.net/eroswa ... -
为重负网络优化 Nginx 和 Node.js
2013-05-13 01:12 1005原文:http://linux.cn/forum.php?mo ... -
《APUE》:线程和fork(父子进程锁)
2013-04-29 21:07 1169《Unix环境高级编程》这本书附带了许多短小精美的小程序,我在 ... -
多线程下慎用sigwait
2013-04-29 20:54 792原文:http://blog.chinaunix. ... -
ubuntu eclipse 问题
2013-04-05 03:30 791Eclipse 3.6 在 Ubuntu 10.04 下会出现 ... -
linux多线程之pthread_cancel结束线程(防止死锁)
2013-03-28 18:28 1248linux多线程之pthread_cancel结束线程 摘要: ... -
c++ 多线程编程的时候遇到了一个编译问
2013-03-27 15:22 823今天在进行多线程编程的时候遇到了一个编译问题:error: a ... -
socket参数详解:KeepAlive
2013-03-19 13:24 1209TCP协议中有长连接和短连接之分。短连接在数据包发送完成后就会 ... -
ehcache分布式例子
2013-03-19 11:52 630配置文件: recluster_ehcache_0.xml ... -
Voldemort — 分布式 key-value 存储系统
2013-03-19 00:40 1010Voldemort — 分布式 key-value 存储系统 ... -
crontab中运行python程序出错,提示ImportError: No module named解决全过程
2013-03-11 16:18 1235原文地址:http://blog.csdn.net/langl ... -
Linux crontab
2013-03-08 18:27 1059crontab是Linux下最常用的计划任务服务。本文跟大家分 ... -
tinyxml 实例
2013-02-28 15:00 658tinyxml 实例 例子见附件 -
C++ 中char*,const char*,string 轉換
2013-02-26 11:34 11161. string转const char* string ... -
WARNING: source src1: skipped 14 document(s) with zero/NULL ids
2012-12-18 21:17 1930select 中缺少主键id -
libmysqlclient.so.15 is needed by .....
2012-12-18 16:22 1162libmysqlclient.so.15 is needed ...
相关推荐
Java编程语言自1995年发布以来,已经成为全球开发者广泛使用的编程工具,其设计理念和特性不断进化和完善。然而,如同任何技术一样,Java在设计过程中也存在一些争议和值得探讨的问题,其中之一便是继承的使用。本文...
JavaFX是Java平台上的一个强大的用户界面工具包,用于创建...但是,由于标题中提到“有待完善,慎用”,说明这个项目可能还在开发阶段,可能存在一些未解决的问题,因此在使用时需要谨慎,可能需要进一步完善和调试。
加密的惨剧!慎用文件夹加密软件! 加密的惨剧!慎用文件夹加密软件!
把要删除的文件拖到这个文件上面即可。注意,这是强力删除。一定慎用,因为连垃圾箱都会没有的。
java的file rename方法 以前我一直以为File#renameTo(File)方法与OS下面的 move/mv 命令是相同的,可以达到改名、移动文件的目的。不过后来经常发现问题:File#renameTo(File)方法会返回失败(false),文件没有移动,...
易语言处理事件命令慎用时钟版源码,处理事件命令慎用时钟版
- **慎用`GetStringCritical`**:由于它可能导致GC暂停,因此只应在没有内存分配和阻塞操作的短时间段内使用。 在上述示例中,由于`fprintf`可能触发I/O操作,这会阻塞系统,因此在使用`GetStringCritical`后调用它...
标题“慎用动态编译”指的是在编程过程中对动态编译这一技术的谨慎态度。动态编译是程序运行时根据需要将源代码编译为可执行代码的过程,与静态编译(编译时一次性完成)形成对比。在Java中,JIT(Just-In-Time)...
SQL和MSDE清理小程序(慎用),SQL和MSDE清理小程序(慎用),SQL和MSDE清理小程序(慎用),
慎用六大软件伤硬盘最终版.pdf
计算机技术、IT咨询、人工智能AI理论介绍,学习参考资料计算机技术、IT咨询、人工智能AI理论介绍,学习参考资料计算机技术、IT咨询、人工智能AI理论介绍,学习参考资料计算机技术、IT咨询、人工智能AI理论介绍,学习...
互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术...
玩客云 灯光控制 容易烧主板 慎用
标题“慎用ext.zip”可能指的是在编程或系统管理中,对使用特定扩展名如“ext.zip”可能带来的潜在问题的警示。虽然描述部分没有提供具体信息,但我们可以基于这个标题来探讨一下在处理zip文件,特别是那些带有“ext...
慎用抗生素 刻不容缓 (小品).docx
初中语文文摘生活慎用何首乌治白发
11. 慎用异常:异常处理应仅用于错误处理,而不是控制程序流程。异常的创建和处理会影响性能。 12. 循环中的异常处理:避免在循环内部使用`try-catch`,将其移至循环外部,以减少异常处理的开销。 13. 设置`...
易语言处理事件命令慎用线程版源码。@易语言源码分享站。
《易语言处理事件命令慎用时钟版源码解析》 易语言,作为一款由中国程序员设计的编程语言,以其简洁的语法和贴近自然语言的特点,为初学者提供了友好的编程环境。然而,对于任何编程语言而言,理解并合理使用各种...