- 浏览: 2494 次
- 性别:
- 来自: 上海
最近访客 更多访客>>
文章分类
最新评论
-
AllenZhang:
我觉得一直以来,人都有个错误的认识,以为人脑反应出的是随机数。 ...
[讨论]一般伪随机数和逼真伪随机数和真随机数 -
xuanyuanyilu:
<div class="quote_title ...
[讨论]一般伪随机数和逼真伪随机数和真随机数 -
xuanyuanyilu:
<div class="quote_title ...
[讨论]一般伪随机数和逼真伪随机数和真随机数 -
xuanyuanyilu:
<div class="quote_title ...
[讨论]一般伪随机数和逼真伪随机数和真随机数 -
苍山洱海:
<pre name="code" c ...
[讨论]一般伪随机数和逼真伪随机数和真随机数
背景:做一个抽奖程序,当时的随机算法没考虑太深,直接调用了new
Random().nextInt(totalNum);然后在测试的时候发现总共1000人左右,摇出的号很多集中在600-800之间,被人说黑幕,汗一个,查找资料,重新改随机数算法,总结如下,仅代表个人意见,欢饮大家讨论
-------------------------------------
java的Random类产生的随机数,不论是有种子还是无种子,不论是next()还是nextInt()还是...都是伪随机数,一般伪随机数,符合一定的正态分布,在某一个数字段内出现的概率会明显大于另一字段内的概率,我就很悲剧的遇上了,1000人抽选40人,600-800间的人大部分(抽了挺多次,都这样)
后来改程序,自认为实现了逼真伪随机数,就是每次都以触发时的时间毫秒数为种子,产生一个newRandom(seed),再调用nextInt(totalNum),测试发现1000人抽选40的分布比较均匀了,基本每隔100的人数都差不多。逼真是因为多了一个不确定的时间毫秒数,从而使伪随即数也有了不确定性。
至于真随机数,查找资料说是一般的计算机根本无法实现,因为一般计算机都用某种方法来创造一个随机数,这个方法肯定是确定的,所以肯定有个方法来推测出下一个随机数。(特殊计算机据说能实现) 真正的随机数要实现,只能靠人脑,比如猜猜我现在想的1000内的数是多少,我在想的这个数才是真随机数。
--------------------------------------
欢饮各抒己见
-------------------------------------
java的Random类产生的随机数,不论是有种子还是无种子,不论是next()还是nextInt()还是...都是伪随机数,一般伪随机数,符合一定的正态分布,在某一个数字段内出现的概率会明显大于另一字段内的概率,我就很悲剧的遇上了,1000人抽选40人,600-800间的人大部分(抽了挺多次,都这样)
后来改程序,自认为实现了逼真伪随机数,就是每次都以触发时的时间毫秒数为种子,产生一个newRandom(seed),再调用nextInt(totalNum),测试发现1000人抽选40的分布比较均匀了,基本每隔100的人数都差不多。逼真是因为多了一个不确定的时间毫秒数,从而使伪随即数也有了不确定性。
至于真随机数,查找资料说是一般的计算机根本无法实现,因为一般计算机都用某种方法来创造一个随机数,这个方法肯定是确定的,所以肯定有个方法来推测出下一个随机数。(特殊计算机据说能实现) 真正的随机数要实现,只能靠人脑,比如猜猜我现在想的1000内的数是多少,我在想的这个数才是真随机数。
--------------------------------------
欢饮各抒己见
评论
18 楼
AllenZhang
2011-01-17
我觉得一直以来,人都有个错误的认识,以为人脑反应出的是随机数。其实你随机100个出来看,你会发现想到的会有很多重复,或者接下来的数是按照某个规律出现的。人肉级别的随机数也是伪的。
17 楼
xuanyuanyilu
2011-01-17
苍山洱海 写道
发现带种子的方差 比 不带种子的还要大
实践帝,拜服一个先。前面有哥们回复+我的推测(上一楼),种子相近的话,产生的随机数列的范围也会比较相近,
所以这个用时间做种子的方差会比没种子的大(我推测你用的也是1.5版本以上的JDK),因为你for循环俩时间基本变化不大,很可能相等。
而作为一个抽奖程序,现实中是抽一个大家乐呵一下再抽下一个,所以种子变化大的多。所以才能产生我说的现象吧,把时间作为种子后,产生的随机数更分布均匀了
16 楼
xuanyuanyilu
2011-01-17
pengzhoushuo 写道
不知道你用的JDK是什么版本?
如果是1.4及以下的,那new Random() 默认就是用System.currentSystemMillions()作为种子。跟你后来改的程序是一样的。
如果是1.5及以上的,那new Random()默认是用System.currentSystemNanoTime() 再加上一个Random的static变量的值为种子,这个static你每new Random()一次,它的值便会自增1。
如果是1.4及以下的,那new Random() 默认就是用System.currentSystemMillions()作为种子。跟你后来改的程序是一样的。
如果是1.5及以上的,那new Random()默认是用System.currentSystemNanoTime() 再加上一个Random的static变量的值为种子,这个static你每new Random()一次,它的值便会自增1。
我用的1.6,根据你的意思加我的猜测,这个种子相近的话出现的随机数列的值的范围也相近啊,坐等高手看看
15 楼
xuanyuanyilu
2011-01-17
jorneyR 写道
我是这样写的,当程序每次运行的时候,种子是不一样的,但是在同一个程序中,种子还是同一个,是我没有描述清楚。
import java.util.Random; public class CommonUtil { private static Random rand = null; // 返回一个范围在[0, max)的随机数 public static int nextInt(int max) { if (rand == null) { synchronized (CommonUtil.class) { if (rand == null) { rand = new Random(System.currentTimeMillis()); } } } return rand.nextInt(max); } }
恩,这个就是后来我改的方法
14 楼
苍山洱海
2011-01-15
used time is :162722 ms 99367 99914 100421 100049 100037 100219 100641 101093 100494 100348 99574 99810 99607 99575 99405 99962 99912 99693 100057 99885 100097 100401 99692 99494 99711 100262 99026 99905 99420 99833 100382 100289 100048 99960 100099 99811 100096 99949 99785 100041 99921 100264 100824 100476 100237 100371 100100 100506 99844 100757 100200 100073 100111 99374 99867 100142 100328 99589 99523 99551 100031 100515 99897 99675 100778 100296 100280 100508 99610 99773 98995 99145 99920 99759 99699 100873 100811 100632 99953 99977 99843 99591 100284 99580 100251 100170 100072 99839 99448 100113 100363 100432 99602 100506 100379 100102 99894 99476 99603 100076 100510 99983 100488 100633 100496 99923 100487 100342 100479 99669 98791 99287 99611 100127 100079 99709 99539 100290 100342 100939 100229 100764 99891 100290 100274 99559 99226 99634 99676 100257 99553 100116 99807 99589 99934 100307 100313 100482 98991 99992 99641 100217 99843 100053 100230 99788 100105 101192 101110 100456 100373 99737 99993 100111 100085 99830 99477 99614 99378 100309 100238 100506 99834 99355 99973 99516 99815 99839 99819 99481 99427 99570 100082 99820 100298 100195 99851 100390 100108 100450 100158 99962 100107 99898 100497 99920 100080 100455 100238 100512 100573 100562 99762 100079 99704 99898 99744 99811 99736 99109 99171 100102 100028 99934 100426 100074 99979 100315 99900 99289 98886 99546 99379 99684 99904 99957 100083 100244 100373 100890 99770 99967 100085 100255 99941 100061 99303 99046 98837 100082 100153 100416 100450 100522 100431 100335 100389 99308 99163 99165 100433 99701 99938 99826 99698 99672 100202 100397 100330 100161 99011 98731 99710 99898 99662 99466 99357 99969 100699 100740 100565 100650 99622 100143 100028 99972 99365 100451 99186 100072 99986 99668 99674 99615 99296 99952 100061 99852 99912 99595 99645 99600 99786 99837 99794 100315 100657 100430 100361 99836 100201 100006 99048 99816 100072 99508 100275 99728 99747 100438 101073 100382 99990 99876 100502 99990 99788 100172 99765 99394 99810 100408 99452 100128 99338 99827 99814 100098 100138 99855 99705 99288 99461 99866 99883 99277 100104 100609 99864 100410 100777 100642 99767 99909 99865 100153 100242 99944 99556 99720 100018 100899 100331 99905 100095 100759 100906 100672 100544 99510 99347 99455 99854 99595 99854 100496 99902 99844 100558 100599 99461 99903 100105 100181 99914 100370 100020 100128 99628 99773 100243 100705 100689 100447 100367 100296 100080 99070 99965 99635 99579 99441 100138 100097 99746 99843 100206 100251 100672 100081 99970 99929 100087 99785 99426 100194 99428 99350 100515 100822 100373 99889 100201 100720 100365 100189 100105 99984 100030 99855 100634 100351 100034 99892 99646 100404 100394 100282 100106 99720 99726 98981 99911 99607 99945 99432 100138 100429 100516 100583 100103 100384 99313 100234 100469 100361 99660 99490 100031 99625 100182 100804 100616 100426 99908 100385 100776 99963 99866 99550 100169 100835 100858 100012 100046 99905 100017 100021 100105 100559 100384 99066 99581 100250 99534 99912 99697 100280 99845 99801 100647 100583 100795 99792 100074 100549 100507 99563 99607 99344 99504 100074 99979 99995 99838 100800 100183 100990 100658 99756 99650 99525 99710 100082 99711 100635 99395 100214 100109 100423 99763 99506 100301 99990 99689 100648 99989 100066 99520 99645 100581 100533 100298 99981 100280 100951 100580 100400 99507 99588 99305 99897 100239 100097 100423 99986 100227 100588 100226 100024 99847 100294 100085 100091 100216 100273 99431 99244 100151 101712 100261 99925 99957 99386 100115 100326 99947 99454 99324 99243 99622 100131 100019 99763 100186 100190 100487 100536 100484 99996 99704 99844 100459 100463 99927 99703 99473 100478 99223 100035 100533 100465 99700 99901 100069 100038 99227 99778 99291 99969 99793 99413 100106 100141 100176 99997 100974 101237 99704 100311 99839 100215 100163 99328 100013 100125 100238 100765 99876 100918 99400 99702 99150 99357 100470 100222 98715 99738 99854 100552 100344 99913 99540 99989 99724 100405 100291 100236 99513 99849 99376 100180 100375 99458 99168 99797 100579 100457 100583 99950 99500 100365 100186 99692 99918 99856 99513 99728 100120 100539 99581 99675 99838 99396 99833 100204 100229 99731 99321 99859 99350 100591 99782 100086 100165 100212 100403 100118 99341 99576 99556 99700 99904 99875 99808 100072 99736 100264 100877 100434 100081 99535 99930 99813 100290 100015 99637 99541 99835 101032 100285 100531 100211 99714 100580 99772 99792 99848 99306 100027 99479 100153 100132 99994 99701 99414 100222 100509 100857 100440 100147 99520 99957 99999 100183 99395 99897 100243 100029 100651 100185 99600 99981 99894 100143 100037 100639 99853 99671 99408 99608 99838 100007 99466 100023 99470 100032 100326 99744 99699 99675 100309 100145 99892 100421 99923 100297 100052 100433 100937 100465 100009 100041 100040 100321 99908 99931 99983 99723 100360 100611 100489 99853 100577 99687 100339 100237 100000 99702 99114 98749 99978 99610 99902 98942 100145 100330 100123 100410 100240 99768 100231 99724 100247 99636 100078 100157 99470 99900 99838 99836 100276 99938 100383 100197 100424 100203 99444 99342 99289 100118 99506 100010 100551 100734 99932 100590 100307 100368 99857 100237 99765 99420 100321 99408 99597 99386 99338 100654 99914 100635 100241 99774 99911 99752 99781 99923 99997 99868 99064 99926 100159 100720 99793 100380 100261 99811 100304 100046 99638 99651 100419 100549 100083 99851 99883 100291 100202 100523 100928 100515 100470 99913 99802 99903 100171 100068 100017 99647 100424 100754 100111 99645 99438 100040 99944 100429 100076 99800 99741 99250 100055 99914 100054 100072 100651 101200 99887 100126 100043 99507 99605 99873 100377 99321 100094 99757 99859 99809 99527 99967 100394 100243 100466 99714 100014 100124 99608 99657 99668 100934 100414 100457 100265 100403 100747 100439 100405 99772 99489 99368 99255 99124 100206 99644 99466 100307 100560 100552 99907 99477 99916 99325 99737 99560 99259 99308 99323 100183 100167 100609 99975 99970 99614 100286 99933 100276 99887 99388 99756 99905 99893 100052 99860 100242 100362 101219 100609 100238 100498 99664 99648 99619 100254 100226 99804 99372 99516 99556 99766 100745 100256 99640 99883 99997 99916 99691 99462 99420 99800 100102 100564 100956 99923 99408 100000 100306 99927 99858 100627 100134 99937 99876 99837 99693 99727 99461 99727 100519 100653 100340 99587 99730 99816 99343 100102 99191 99792 99705 99907 100159 100241 100198 99900 99996 100439 100863 100029 99869 99513 ------------- 方差=182477.852,标准差=427.1742642060732
13 楼
苍山洱海
2011-01-15
种子改成 System.nanoTime()
public static void runRandom() { for (int i = 0; i < N*TIMES; i++) ary[new Random(System.nanoTime()).nextInt(N)]++; }
12 楼
苍山洱海
2011-01-15
发现带种子的方差 比 不带种子的还要大
11 楼
苍山洱海
2011-01-15
used time is :21027 ms
67910 98825 113796 127631 74529 90191 100728 131166 89878 71040 102372 130132 107452 79899 75385
93689 124473 105982 75493 101298 129284 105175 76451 86006 107909 130850 94278 84442 101547 120161
94111 72215 96818 121140 111153 84239 78727 96048 129687 101892 67015 99389 129676 99858 65039
83208 109380 137816 99014 79456 101603 132725 106787 69351 98210 133018 117557 94747 82339 99140
136194 106036 64146 109778 135577 103561 77713 87718 105797 144885 96623 65399 102225 178186 108318
59819 93969 130018 100196 90149 84857 104450 126397 99753 63859 101763 128660 101593 81040 88771
114410 127472 97236 77095 90174 136468 106432 63475 92435 134363 118343 80375 79508 99847 132509
104714 59718 106423 134126 101664 71288 84939 98025 133393 74185 71413 98317 135093 106103 65858
93123 117948 116394 82904 87151 96174 137638 99904 75316 95387 132413 94728 77556 80083 103460
146900 84591 74088 95167 123199 97837 86622 90986 107413 123494 90281 77401 90484 124692 105177
73176 97152 124478 107862 81622 87089 98754 140767 87609 80145 97246 120375 109400 71496 88788
120028 124404 85013 75068 83164 129756 104047 60235 95829 126414 111917 92985 93710 93651 146081
87529 76289 100265 128034 112876 80556 84584 108459 122157 83260 72842 87917 135479 123220 63148
91035 116248 113367 82780 88889 93094 120982 86836 76388 90199 134828 88765 76456 93278 94976
120790 87879 69678 94006 131960 105382 52589 83308 131639 110451 84566 93503 101189 145692 103921
51678 103941 118885 106608 72131 95636 105962 126772 81365 82689 88662 124000 114532 62142 84731
111854 108536 82156 91404 97433 133387 90743 65732 80821 117912 109081 82523 85329 109985 126345
90985 79002 97192 120036 99329 66234 96965 120156 109516 99348 90033 93058 141938 95640 73017
93077 122254 114803 91387 92164 101080 135081 96207 78226 100296 128413 109544 76648 91117 121232
116506 97614 84130 97540 136934 98415 59172 94313 120227 118980 84318 87281 97701 126603 97119
65312 103809 124438 115648 72888 83979 128618 110466 92923 88479 102360 137581 112385 60901 90921
116415 118323 91151 86903 150982 127525 96410 76265 98015 127186 116295 77382 86699 112623 111999
87089 86112 103877 130354 116940 57767 93543 123504 108830 84059 90303 106995 119905 97775 74346
104299 137467 118280 59822 93123 112502 125507 89252 80907 98048 142937 96637 55084 93391 121790
110396 76974 85235 96445 132303 89986 70464 103283 123911 106724 81922 95610 109479 118688 85793
78549 107587 111274 102077 62015 96301 112361 109775 86534 88762 96413 131325 85572 65714 96286
126613 109631 87911 92518 101827 133424 102369 80003 105118 129332 104205 74593 101256 112569 118753
87702 81882 100420 124024 87596 73170 83628 136531 103207 70537 79412 94327 128904 88452 76069
104356 122131 107753 72738 95401 125807 120398 94627 71872 91545 130240 102723 58635 99930 138288
108779 85627 80521 94474 129789 104897 67472 101575 122312 102676 55677 92754 113529 124930 94569
86130 99331 124762 92634 66000 91930 126386 107797 84130 91338 103259 122673 96375 66905 111485
127216 101505 60567 92123 121362 126743 91118 88789 99948 131372 108897 46408 91529 139823 109017
78779 96278 101027 129541 95177 71050 105131 130176 93058 66965 91374 105995 121965 80269 83746
98036 130626 92310 61752 104181 122430 103695 70433 82555 99307 129474 102576 76977 101151 134603
92007 70184 92000 101283 127764 98018 87616 100274 136981 104641 74638 102284 121684 111749 88739
86764 94381 130910 100816 72611 101924 122696 98979 77350 91054 100957 134586 88938 77573 91029
133364 108442 67571 92769 111934 109890 82655 84468 92114 136219 111561 66947 96992 129934 99717
81619 91076 93104 134950 88773 73865 85974 130048 111427 67465 91472 130337 106692 81197 90125
89973 126317 105954 66902 104589 128109 98255 82520 88682 111720 132015 88238 73809 91438 116056
104480 67691 93419 122507 115246 90549 82026 86736 127624 104399 61751 95207 132237 104291 80623
82892 106458 128622 89818 68689 90170 136227 97488 69664 98400 117383 113573 79255 75638 91143
130440 96320 61825 97482 119918 102557 79107 88604 102260 136683 95876 78363 93691 124916 105164
70669 82818 122815 115616 86103 86460 100981 140022 102840 76899 97329 127324 105518 79589 83868
94969 146088 95285 72544 97613 134345 105532 83228 90865 115093 122143 94714 83723 93267 128997
99931 66111 93112 128476 111540 87878 89176 96932 149138 86273 67282 96423 115623 111419 81336
79122 114264 123136 100678 71069 96731 136939 112798 67593 98704 128074 110252 88564 87353 92084
148058 99152 76005 93746 131177 103284 83919 95763 97380 122061 97678 71915 87842 131616 111729
66220 95083 126898 115565 89489 82974 100714 145007 103008 64228 103692 123249 104984 74657 93669
109544 134311 91962 78235 98542 134740 123902 52750 94041 118064 108170 75448 90046 97400 145738
89133 72420 95357 114360 107640 75433 92481 114090 127868 88667 80929 95010 115177 114816 68053
87065 115154 108549 81538 95740 94554 138496 102836 72906 87977 115945 105689 74564 96659 100308
138807 97389 84052 88588 124786 114092 70008 88609 115314 117373 93201 87625 92384 144873 94458
76016 86731 122578 115877 87375 92415 91796 133204 83503 79506 96822 124229 107542 70353 89042
108503 123546 99617 85401 91882 140211 106231 72630 91152 114350 108604 95325 91052 100401 131265
92639 64627 102798 157379 102637 65597 94090 107281 102897 92701 78146 100087 128985 104872 69983
83689 127580 100497 94537 91865 109681 126700 89434 73414 99438 129705 115063 66281 84238 114614
113799 90493 87219 97797 140124 112707 59564 86992 129830 111538 68890 88430 105151 138429 99774
71759 99285 141596 99950 71523 88667 104786 125737 89704 84982 95290 126625 96142 55033 101083
122666 110688 92108 97769 102711 126612 86724 71105 105982 135430 94857 81242 96599 109989 120026
92737 79974 99316 128787 97623 82583 98643 115813 125371 94232 87158 100040 140059 107932 72581
94366 136370 99966 91012 94981 99837 122344 93833 79015 106369 129743 109249 67504 98352 113549
121818 81282 81112 104780 127616 99525 64605 96265 130826 106232 81393 79939 96074 128673 104623
78952 105319 131203 106404 77731 95031 118316 123985 93840 82154 105417 137398 97544 64073 98588
124504 98680 84370 90822 101246 120885 101632 80747 95627 127570 85647 71602 94935 112323 127565
89750 84398 101367 131652 99333 56080 89927 139170 109465 68325 93540 104827 130842 93922 74096
100849 136161 102126 57607 99427 121440 126019 72034 78048 86219 127563 86909 64250 84130 131142
100822 75551 90555 101147 120927 92098 72136 107763 124944 96861 -------------
方差=4.20377555852E8,标准差=20503.110882302713
67910 98825 113796 127631 74529 90191 100728 131166 89878 71040 102372 130132 107452 79899 75385
93689 124473 105982 75493 101298 129284 105175 76451 86006 107909 130850 94278 84442 101547 120161
94111 72215 96818 121140 111153 84239 78727 96048 129687 101892 67015 99389 129676 99858 65039
83208 109380 137816 99014 79456 101603 132725 106787 69351 98210 133018 117557 94747 82339 99140
136194 106036 64146 109778 135577 103561 77713 87718 105797 144885 96623 65399 102225 178186 108318
59819 93969 130018 100196 90149 84857 104450 126397 99753 63859 101763 128660 101593 81040 88771
114410 127472 97236 77095 90174 136468 106432 63475 92435 134363 118343 80375 79508 99847 132509
104714 59718 106423 134126 101664 71288 84939 98025 133393 74185 71413 98317 135093 106103 65858
93123 117948 116394 82904 87151 96174 137638 99904 75316 95387 132413 94728 77556 80083 103460
146900 84591 74088 95167 123199 97837 86622 90986 107413 123494 90281 77401 90484 124692 105177
73176 97152 124478 107862 81622 87089 98754 140767 87609 80145 97246 120375 109400 71496 88788
120028 124404 85013 75068 83164 129756 104047 60235 95829 126414 111917 92985 93710 93651 146081
87529 76289 100265 128034 112876 80556 84584 108459 122157 83260 72842 87917 135479 123220 63148
91035 116248 113367 82780 88889 93094 120982 86836 76388 90199 134828 88765 76456 93278 94976
120790 87879 69678 94006 131960 105382 52589 83308 131639 110451 84566 93503 101189 145692 103921
51678 103941 118885 106608 72131 95636 105962 126772 81365 82689 88662 124000 114532 62142 84731
111854 108536 82156 91404 97433 133387 90743 65732 80821 117912 109081 82523 85329 109985 126345
90985 79002 97192 120036 99329 66234 96965 120156 109516 99348 90033 93058 141938 95640 73017
93077 122254 114803 91387 92164 101080 135081 96207 78226 100296 128413 109544 76648 91117 121232
116506 97614 84130 97540 136934 98415 59172 94313 120227 118980 84318 87281 97701 126603 97119
65312 103809 124438 115648 72888 83979 128618 110466 92923 88479 102360 137581 112385 60901 90921
116415 118323 91151 86903 150982 127525 96410 76265 98015 127186 116295 77382 86699 112623 111999
87089 86112 103877 130354 116940 57767 93543 123504 108830 84059 90303 106995 119905 97775 74346
104299 137467 118280 59822 93123 112502 125507 89252 80907 98048 142937 96637 55084 93391 121790
110396 76974 85235 96445 132303 89986 70464 103283 123911 106724 81922 95610 109479 118688 85793
78549 107587 111274 102077 62015 96301 112361 109775 86534 88762 96413 131325 85572 65714 96286
126613 109631 87911 92518 101827 133424 102369 80003 105118 129332 104205 74593 101256 112569 118753
87702 81882 100420 124024 87596 73170 83628 136531 103207 70537 79412 94327 128904 88452 76069
104356 122131 107753 72738 95401 125807 120398 94627 71872 91545 130240 102723 58635 99930 138288
108779 85627 80521 94474 129789 104897 67472 101575 122312 102676 55677 92754 113529 124930 94569
86130 99331 124762 92634 66000 91930 126386 107797 84130 91338 103259 122673 96375 66905 111485
127216 101505 60567 92123 121362 126743 91118 88789 99948 131372 108897 46408 91529 139823 109017
78779 96278 101027 129541 95177 71050 105131 130176 93058 66965 91374 105995 121965 80269 83746
98036 130626 92310 61752 104181 122430 103695 70433 82555 99307 129474 102576 76977 101151 134603
92007 70184 92000 101283 127764 98018 87616 100274 136981 104641 74638 102284 121684 111749 88739
86764 94381 130910 100816 72611 101924 122696 98979 77350 91054 100957 134586 88938 77573 91029
133364 108442 67571 92769 111934 109890 82655 84468 92114 136219 111561 66947 96992 129934 99717
81619 91076 93104 134950 88773 73865 85974 130048 111427 67465 91472 130337 106692 81197 90125
89973 126317 105954 66902 104589 128109 98255 82520 88682 111720 132015 88238 73809 91438 116056
104480 67691 93419 122507 115246 90549 82026 86736 127624 104399 61751 95207 132237 104291 80623
82892 106458 128622 89818 68689 90170 136227 97488 69664 98400 117383 113573 79255 75638 91143
130440 96320 61825 97482 119918 102557 79107 88604 102260 136683 95876 78363 93691 124916 105164
70669 82818 122815 115616 86103 86460 100981 140022 102840 76899 97329 127324 105518 79589 83868
94969 146088 95285 72544 97613 134345 105532 83228 90865 115093 122143 94714 83723 93267 128997
99931 66111 93112 128476 111540 87878 89176 96932 149138 86273 67282 96423 115623 111419 81336
79122 114264 123136 100678 71069 96731 136939 112798 67593 98704 128074 110252 88564 87353 92084
148058 99152 76005 93746 131177 103284 83919 95763 97380 122061 97678 71915 87842 131616 111729
66220 95083 126898 115565 89489 82974 100714 145007 103008 64228 103692 123249 104984 74657 93669
109544 134311 91962 78235 98542 134740 123902 52750 94041 118064 108170 75448 90046 97400 145738
89133 72420 95357 114360 107640 75433 92481 114090 127868 88667 80929 95010 115177 114816 68053
87065 115154 108549 81538 95740 94554 138496 102836 72906 87977 115945 105689 74564 96659 100308
138807 97389 84052 88588 124786 114092 70008 88609 115314 117373 93201 87625 92384 144873 94458
76016 86731 122578 115877 87375 92415 91796 133204 83503 79506 96822 124229 107542 70353 89042
108503 123546 99617 85401 91882 140211 106231 72630 91152 114350 108604 95325 91052 100401 131265
92639 64627 102798 157379 102637 65597 94090 107281 102897 92701 78146 100087 128985 104872 69983
83689 127580 100497 94537 91865 109681 126700 89434 73414 99438 129705 115063 66281 84238 114614
113799 90493 87219 97797 140124 112707 59564 86992 129830 111538 68890 88430 105151 138429 99774
71759 99285 141596 99950 71523 88667 104786 125737 89704 84982 95290 126625 96142 55033 101083
122666 110688 92108 97769 102711 126612 86724 71105 105982 135430 94857 81242 96599 109989 120026
92737 79974 99316 128787 97623 82583 98643 115813 125371 94232 87158 100040 140059 107932 72581
94366 136370 99966 91012 94981 99837 122344 93833 79015 106369 129743 109249 67504 98352 113549
121818 81282 81112 104780 127616 99525 64605 96265 130826 106232 81393 79939 96074 128673 104623
78952 105319 131203 106404 77731 95031 118316 123985 93840 82154 105417 137398 97544 64073 98588
124504 98680 84370 90822 101246 120885 101632 80747 95627 127570 85647 71602 94935 112323 127565
89750 84398 101367 131652 99333 56080 89927 139170 109465 68325 93540 104827 130842 93922 74096
100849 136161 102126 57607 99427 121440 126019 72034 78048 86219 127563 86909 64250 84130 131142
100822 75551 90555 101147 120927 92098 72136 107763 124944 96861 -------------
方差=4.20377555852E8,标准差=20503.110882302713
10 楼
苍山洱海
2011-01-15
public static void runRandom() { for (int i = 0; i < N*TIMES; i++) ary[new Random(System.currentTimeMillis()).nextInt(N)]++; }
然后改成带种子的。
9 楼
苍山洱海
2011-01-15
used time is :1548913 ms
998903 999431 999216 996790 996874 997667 1001339 1005979 1005479 1003438 998122 998575 997964 1001837 1002150 1006779 1002309 997290 997910 998332
1002033 999481 995802 996453 998671 1005052 1009259 1005917 999764 1001700 1002111 1000367 1002949 1004952 999757 1000744 1001726 1002177 1000941 1000376
999890 1002219 998473 999082 1004460 1004426 999771 996692 999848 998952 1003985 1005948 1003483 998826 999493 997643 996496 1001789 1002516 1004990
1000491 1001941 1004033 1001460 1004748 1001378 996971 997287 1002407 1005383 1001523 1002262 1000018 999027 996595 994904 997782 996732 998424 1001541
1002707 1004556 1005949 1003990 1000742 994617 991744 995807 997425 999932 1002602 997505 1000118 1000156 1001475 998460 996104 995967 997633 1003372
1002324 1000284 1004468 1001834 996976 998252 1003058 999978 995570 992831 999058 1000635 1002911 997829 1000227 1001479 999536 1000620 1001565 999157
999506 1001215 1001833 1001210 1004529 1002300 1000480 998484 997620 1001046 1000699 1000056 1007028 1005019 1002101 1002356 1000520 999619 1002396 997368
997855 998102 996550 999422 1006230 1002933 1003372 1001748 997789 999229 996627 998141 999475 995728 995158 1005020 1012622 1006074 1003474 1000981
995171 1001313 1000503 999743 1002112 1001942 1001501 1000988 1000190 1000769 999708 994128 991922 991070 987246 994396 1002475 997307 990663 1000232
998812 1000056 1002919 998745 995393 1000717 1000920 1000246 1003532 1000821 997424 998829 1000501 1000206 1000778 999439 995018 994455 990506 996294
1003217 999434 999189 994809 992143 1000853 1002738 1002070 1002051 1001264 996721 998013 1001375 999378 995764 994032 991192 997427 999676 1003842
1012012 1005254 1000218 1000378 999868 998278 1000362 998042 995499 999151 1001741 1001566 999618 997759 994890 998114 998029 1003639 1003922 999169
999637 1001163 1000413 1000632 1002306 1000374 998072 998894 996896 997787 1002536 999428 1000607 1000794 999044 1005135 1003408 997552 998619 995537
999224 1004033 1007218 1004986 1004572 997485 996055 1000764 1003944 999251 1000800 1000865 998677 1002392 1000659 1000257 1000180 995454 994639 994297
999423 1001498 999080 1000125 1001409 1004853 1005323 1001131 999101 999686 999443 994995 996601 1000678 997765 996211 997589 992194 995085 1003189
999739 996978 997748 1002871 1001422 999500 1001065 1002850 999990 996631 998196 1003803 1001430 998441 998977 998011 998256 1000288 996650 995623
994173 997964 996300 999159 1000498 1001548 1001817 997341 997929 1001242 1000103 999404 996696 996600 998708 1000409 1001247 1002505 999909 995645
996656 997711 999622 1004828 1001687 1000112 1000117 1002378 1004481 1005966 1002887 1000415 999636 998788 999934 1002793 1004509 1000540 1001471 996828
1001418 995379 996307 999778 996875 998109 1001581 1009720 1005920 1005769 1003054 998288 1001653 1003970 1006878 1003712 1001484 998996 1003905 1005077
1001216 1003186 1003576 998092 996493 997973 1001338 1006540 1004118 999660 1001467 999663 997569 999858 999908 996095 999777 996458 999030 1005051
1004806 1000498 1001689 1002487 999146 1001399 999562 998115 1001233 1001365 998091 1002986 1005734 998179 997213 989985 997594 1002858 999700 996348
999386 1000806 999329 1001484 1001432 1001935 998555 996675 994220 998107 1001188 1004169 999896 995759 1001847 1002901 1000147 1000069 1002172 1000423
996995 999269 1000209 1003833 1004263 999244 998104 999689 1000494 1000517 1003506 1003704 1002228 1002499 1001584 1005312 1001819 999049 997114 996608
999897 1003846 1003307 1002432 1000268 1002147 1007349 1004687 1004292 1003018 998278 1000696 1007646 1007506 1005792 1001800 999714 999656 996172 1000566
1001554 1001014 999175 998768 993791 993780 1000337 1003874 1002965 1000362 996265 996911 1001995 1002582 998585 1001308 1000696 1002459 1009062 1004599
998354 999513 997991 998353 1001130 1003671 1000842 1000110 997168 997483 1006817 1003927 997256 996878 997325 999057 1005011 1004757 1000531 999725
997367 1001418 999560 997468 996638 996279 997510 1002826 1004865 1002570 998683 998570 994822 994175 999483 1000762 1000624 999053 1000800 1001992
1002844 999960 999398 1003373 996153 991752 1002120 999086 1001128 996790 989015 989746 998440 1001737 1000703 1000125 1002655 1001755 999523 999392
1003466 1003748 998134 996520 998485 997896 999186 999048 997326 999153 996205 999710 1003780 1004209 1008648 1007537 994846 996404 1003737 1000595
999892 1002664 999230 994749 1000106 1001982 1003035 999486 995635 997358 1001747 1006260 1009546 1005013 999654 998761 995082 997332 998745 1000848
997071 999540 1000479 1002779 1006365 1004755 995427 995228 997036 997205 1001806 1002205 999318 999359 992661 992537 1000025 1000512 997353 996024
995932 998294 1001205 1001276 1001035 1001147 998970 993468 1000258 1000959 997822 994623 992194 996671 999941 1002049 1002306 1001925 998881 1000170
999927 998348 1000942 1004120 998745 997486 999033 996333 1000232 1000413 996896 996865 998430 998673 998255 997951 1001531 999808 998861 1000676
997449 1000691 999554 996990 996357 998127 1001545 1001236 999664 996834 994836 994782 998876 998919 1001552 1000406 995390 1005047 1008037 1006834
1001441 996228 997650 999889 1003320 999902 998953 1003188 1000090 1000182 1000273 1000142 999891 999208 995221 998861 1002926 1001964 1002243 1002688
1002904 1000741 1000253 998553 999004 999762 1001088 1002796 1003673 1005841 1002554 996239 995632 998682 997819 999959 999193 999670 1000856 1003661
1002884 1003392 1004915 1000152 997566 996934 1000864 1005418 1002754 998409 1000974 1001818 998297 998085 993108 996061 996356 989964 993227 998732
1001481 1000092 1000362 1002017 999828 1004871 1004563 1000369 999124 995217 996564 999610 1000449 1003184 1005688 996982 989973 992781 997180 999751
1000249 991956 996067 997613 999551 998584 1000792 997219 993630 998147 1000178 1003560 1006182 1000716 998577 996159 997676 1000862 999272 998101
1007126 1003824 998518 1005784 1007276 1001353 998993 996574 998169 1002524 1005505 1006597 1004852 999495 997428 998363 1001282 1002468 999758 996806
992501 998943 1002075 1009101 1007538 1002316 1000638 1002593 1003318 1005854 1002082 997379 996105 997612 1002470 1006293 1005802 999430 1003929 998206
998726 1000373 998709 997707 999807 999432 1001237 1005446 1002349 998531 997758 995358 993350 999675 1001871 1004405 1003615 998869 998790 1005089
1004195 999756 996875 996303 995035 1002387 1005205 1008372 1003067 994906 994170 996315 996629 998858 998881 997862 998269 1004427 1005197 1000562
986791 986793 995397 997049 1000071 1002274 998465 1003023 1000581 1001218 1000943 1003061 1000897 995794 998876 995262 996100 997218 1001491 1001629
1000142 1000273 998896 1001713 1001986 999384 998149 1000712 1001772 1003609 1002706 1001208 1001018 1002174 1001760 1001717 999011 995920 996732 998489
1002131 1003088 1002439 1003187 999466 997653 998477 996414 1002309 1001327 1004624 1006314 1006427 1002867 1001786 998733 995911 996299 998958 1000196
1000905 999201 995619 1004673 992847 990673 1006609 1006636 999351 998011 999886 1001154 1006251 1007099 1002283 998734 1000315 999750 1002164 1001533
1000212 999866 998361 999143 1005048 1000117 996803 999886 996983 998281 1000629 1001062 999633 998963 998316 995983 996249 998252 1000783 1000447
995444 997555 1002133 1001159 999416 1004602 1001940 998217 995547 994407 1003017 1005439 996900 992642 995475 998751 1003481 1005644 999814 996175
996888 993989 996524 999847 996319 995891 998863 999963 1004444 1006160 1001223 995103 994321 998549 1001742 1000656 1002493 1003224 1000064 996434
-------------
方差=1.1597439802E7,标准差=3405.5014024369448
998903 999431 999216 996790 996874 997667 1001339 1005979 1005479 1003438 998122 998575 997964 1001837 1002150 1006779 1002309 997290 997910 998332
1002033 999481 995802 996453 998671 1005052 1009259 1005917 999764 1001700 1002111 1000367 1002949 1004952 999757 1000744 1001726 1002177 1000941 1000376
999890 1002219 998473 999082 1004460 1004426 999771 996692 999848 998952 1003985 1005948 1003483 998826 999493 997643 996496 1001789 1002516 1004990
1000491 1001941 1004033 1001460 1004748 1001378 996971 997287 1002407 1005383 1001523 1002262 1000018 999027 996595 994904 997782 996732 998424 1001541
1002707 1004556 1005949 1003990 1000742 994617 991744 995807 997425 999932 1002602 997505 1000118 1000156 1001475 998460 996104 995967 997633 1003372
1002324 1000284 1004468 1001834 996976 998252 1003058 999978 995570 992831 999058 1000635 1002911 997829 1000227 1001479 999536 1000620 1001565 999157
999506 1001215 1001833 1001210 1004529 1002300 1000480 998484 997620 1001046 1000699 1000056 1007028 1005019 1002101 1002356 1000520 999619 1002396 997368
997855 998102 996550 999422 1006230 1002933 1003372 1001748 997789 999229 996627 998141 999475 995728 995158 1005020 1012622 1006074 1003474 1000981
995171 1001313 1000503 999743 1002112 1001942 1001501 1000988 1000190 1000769 999708 994128 991922 991070 987246 994396 1002475 997307 990663 1000232
998812 1000056 1002919 998745 995393 1000717 1000920 1000246 1003532 1000821 997424 998829 1000501 1000206 1000778 999439 995018 994455 990506 996294
1003217 999434 999189 994809 992143 1000853 1002738 1002070 1002051 1001264 996721 998013 1001375 999378 995764 994032 991192 997427 999676 1003842
1012012 1005254 1000218 1000378 999868 998278 1000362 998042 995499 999151 1001741 1001566 999618 997759 994890 998114 998029 1003639 1003922 999169
999637 1001163 1000413 1000632 1002306 1000374 998072 998894 996896 997787 1002536 999428 1000607 1000794 999044 1005135 1003408 997552 998619 995537
999224 1004033 1007218 1004986 1004572 997485 996055 1000764 1003944 999251 1000800 1000865 998677 1002392 1000659 1000257 1000180 995454 994639 994297
999423 1001498 999080 1000125 1001409 1004853 1005323 1001131 999101 999686 999443 994995 996601 1000678 997765 996211 997589 992194 995085 1003189
999739 996978 997748 1002871 1001422 999500 1001065 1002850 999990 996631 998196 1003803 1001430 998441 998977 998011 998256 1000288 996650 995623
994173 997964 996300 999159 1000498 1001548 1001817 997341 997929 1001242 1000103 999404 996696 996600 998708 1000409 1001247 1002505 999909 995645
996656 997711 999622 1004828 1001687 1000112 1000117 1002378 1004481 1005966 1002887 1000415 999636 998788 999934 1002793 1004509 1000540 1001471 996828
1001418 995379 996307 999778 996875 998109 1001581 1009720 1005920 1005769 1003054 998288 1001653 1003970 1006878 1003712 1001484 998996 1003905 1005077
1001216 1003186 1003576 998092 996493 997973 1001338 1006540 1004118 999660 1001467 999663 997569 999858 999908 996095 999777 996458 999030 1005051
1004806 1000498 1001689 1002487 999146 1001399 999562 998115 1001233 1001365 998091 1002986 1005734 998179 997213 989985 997594 1002858 999700 996348
999386 1000806 999329 1001484 1001432 1001935 998555 996675 994220 998107 1001188 1004169 999896 995759 1001847 1002901 1000147 1000069 1002172 1000423
996995 999269 1000209 1003833 1004263 999244 998104 999689 1000494 1000517 1003506 1003704 1002228 1002499 1001584 1005312 1001819 999049 997114 996608
999897 1003846 1003307 1002432 1000268 1002147 1007349 1004687 1004292 1003018 998278 1000696 1007646 1007506 1005792 1001800 999714 999656 996172 1000566
1001554 1001014 999175 998768 993791 993780 1000337 1003874 1002965 1000362 996265 996911 1001995 1002582 998585 1001308 1000696 1002459 1009062 1004599
998354 999513 997991 998353 1001130 1003671 1000842 1000110 997168 997483 1006817 1003927 997256 996878 997325 999057 1005011 1004757 1000531 999725
997367 1001418 999560 997468 996638 996279 997510 1002826 1004865 1002570 998683 998570 994822 994175 999483 1000762 1000624 999053 1000800 1001992
1002844 999960 999398 1003373 996153 991752 1002120 999086 1001128 996790 989015 989746 998440 1001737 1000703 1000125 1002655 1001755 999523 999392
1003466 1003748 998134 996520 998485 997896 999186 999048 997326 999153 996205 999710 1003780 1004209 1008648 1007537 994846 996404 1003737 1000595
999892 1002664 999230 994749 1000106 1001982 1003035 999486 995635 997358 1001747 1006260 1009546 1005013 999654 998761 995082 997332 998745 1000848
997071 999540 1000479 1002779 1006365 1004755 995427 995228 997036 997205 1001806 1002205 999318 999359 992661 992537 1000025 1000512 997353 996024
995932 998294 1001205 1001276 1001035 1001147 998970 993468 1000258 1000959 997822 994623 992194 996671 999941 1002049 1002306 1001925 998881 1000170
999927 998348 1000942 1004120 998745 997486 999033 996333 1000232 1000413 996896 996865 998430 998673 998255 997951 1001531 999808 998861 1000676
997449 1000691 999554 996990 996357 998127 1001545 1001236 999664 996834 994836 994782 998876 998919 1001552 1000406 995390 1005047 1008037 1006834
1001441 996228 997650 999889 1003320 999902 998953 1003188 1000090 1000182 1000273 1000142 999891 999208 995221 998861 1002926 1001964 1002243 1002688
1002904 1000741 1000253 998553 999004 999762 1001088 1002796 1003673 1005841 1002554 996239 995632 998682 997819 999959 999193 999670 1000856 1003661
1002884 1003392 1004915 1000152 997566 996934 1000864 1005418 1002754 998409 1000974 1001818 998297 998085 993108 996061 996356 989964 993227 998732
1001481 1000092 1000362 1002017 999828 1004871 1004563 1000369 999124 995217 996564 999610 1000449 1003184 1005688 996982 989973 992781 997180 999751
1000249 991956 996067 997613 999551 998584 1000792 997219 993630 998147 1000178 1003560 1006182 1000716 998577 996159 997676 1000862 999272 998101
1007126 1003824 998518 1005784 1007276 1001353 998993 996574 998169 1002524 1005505 1006597 1004852 999495 997428 998363 1001282 1002468 999758 996806
992501 998943 1002075 1009101 1007538 1002316 1000638 1002593 1003318 1005854 1002082 997379 996105 997612 1002470 1006293 1005802 999430 1003929 998206
998726 1000373 998709 997707 999807 999432 1001237 1005446 1002349 998531 997758 995358 993350 999675 1001871 1004405 1003615 998869 998790 1005089
1004195 999756 996875 996303 995035 1002387 1005205 1008372 1003067 994906 994170 996315 996629 998858 998881 997862 998269 1004427 1005197 1000562
986791 986793 995397 997049 1000071 1002274 998465 1003023 1000581 1001218 1000943 1003061 1000897 995794 998876 995262 996100 997218 1001491 1001629
1000142 1000273 998896 1001713 1001986 999384 998149 1000712 1001772 1003609 1002706 1001208 1001018 1002174 1001760 1001717 999011 995920 996732 998489
1002131 1003088 1002439 1003187 999466 997653 998477 996414 1002309 1001327 1004624 1006314 1006427 1002867 1001786 998733 995911 996299 998958 1000196
1000905 999201 995619 1004673 992847 990673 1006609 1006636 999351 998011 999886 1001154 1006251 1007099 1002283 998734 1000315 999750 1002164 1001533
1000212 999866 998361 999143 1005048 1000117 996803 999886 996983 998281 1000629 1001062 999633 998963 998316 995983 996249 998252 1000783 1000447
995444 997555 1002133 1001159 999416 1004602 1001940 998217 995547 994407 1003017 1005439 996900 992642 995475 998751 1003481 1005644 999814 996175
996888 993989 996524 999847 996319 995891 998863 999963 1004444 1006160 1001223 995103 994321 998549 1001742 1000656 1002493 1003224 1000064 996434
-------------
方差=1.1597439802E7,标准差=3405.5014024369448
8 楼
苍山洱海
2011-01-15
package on201101; import java.math.BigDecimal; import java.util.Date; import java.util.Random; public class RandomTest { static final int N = 1000; static final int TIMES = 1000000; static int ary[] = new int[N]; public static void runRandom() { for (int i = 0; i < N*TIMES; i++) ary[new Random().nextInt(N)]++; } public static void main(String[] args) { Date start = new Date(); runRandom(); System.out.println("used time is :" + (new Date().getTime() - start.getTime()) + " ms"); printResult(); System.out.println("------------- "); double d = calculateFangCha(ary); System.out.println("方差=" + d + ",标准差=" + Math.sqrt(d)); //printPercentResult(); } public static void printResult() { for (int i = 0; i < ary.length; i++) { System.out.print(ary[i] + "\t"); if (i % 20 == 19) System.out.println(); } } public static void printPercentResult() { for (int i = 0; i < ary.length; i++) { System.out.print(ary[i]*1.0/TIMES + "\t"); if (i % 20 == 19) System.out.println(); } } /** * 计算方差 * @param nums * @return */ public static double calculateFangCha(int[] nums) { BigDecimal total = BigDecimal.ZERO; BigDecimal avg = avgNum(ary); for (int i : nums) { BigDecimal temp = new BigDecimal(i).subtract(avg); double dtmp = Math.pow(temp.doubleValue(), 2); total = total.add(new BigDecimal(dtmp)); } return total.divide(new BigDecimal(nums.length)).doubleValue(); } /** * 计算平均数 * @param nums * @return */ public static BigDecimal avgNum(int[] nums) { long l = 0; for (int i : nums) l += i; return new BigDecimal(l).divide(new BigDecimal(nums.length)); } }
7 楼
pengzhoushuo
2011-01-15
不知道你用的JDK是什么版本?
如果是1.4及以下的,那new Random() 默认就是用System.currentSystemMillions()作为种子。跟你后来改的程序是一样的。
如果是1.5及以上的,那new Random()默认是用System.currentSystemNanoTime() 再加上一个Random的static变量的值为种子,这个static你每new Random()一次,它的值便会自增1。
如果是1.4及以下的,那new Random() 默认就是用System.currentSystemMillions()作为种子。跟你后来改的程序是一样的。
如果是1.5及以上的,那new Random()默认是用System.currentSystemNanoTime() 再加上一个Random的static变量的值为种子,这个static你每new Random()一次,它的值便会自增1。
6 楼
xjtusehcy
2011-01-15
Linux内核维护一个随机熵池。可以通过读取设备/dev/random来获得随机数。这里面获得的随机数是内核根据系统运行期间的一些随机事件确定的。比如鼠标点的位置等。随机性比较好。
5 楼
sleepinglord
2011-01-14
伪随机数这样的问题可以去看看Knuth的那三本书,里面有一章专门讲随机数生成。
里面的关键问题是:什么样的数列是随机的数列呢?
原则上,任何一个有限长度的数列都不是随机的,无论你用什么办法生成。因为根据拉格朗日插值公式,给定一个有限长度的数列a1...an,一定可以找到一个多项式f(x),使得f(1)=a1,f(2)=a2,……f(n)=an,可以用多项式完整生成的数列怎么能称为随机的呢?但是如果承认这不是随机的,随机数列的生成就成为不可能!
数学家花了很长时间证明,某一类递推公式生成的数列看起来“非常像”随机的。这个“非常像”的定义比较复杂,不过Knuth那本书里说的还算好懂,想了解的话可以去仔细看看。
里面的关键问题是:什么样的数列是随机的数列呢?
原则上,任何一个有限长度的数列都不是随机的,无论你用什么办法生成。因为根据拉格朗日插值公式,给定一个有限长度的数列a1...an,一定可以找到一个多项式f(x),使得f(1)=a1,f(2)=a2,……f(n)=an,可以用多项式完整生成的数列怎么能称为随机的呢?但是如果承认这不是随机的,随机数列的生成就成为不可能!
数学家花了很长时间证明,某一类递推公式生成的数列看起来“非常像”随机的。这个“非常像”的定义比较复杂,不过Knuth那本书里说的还算好懂,想了解的话可以去仔细看看。
4 楼
jorneyR
2011-01-14
我是这样写的,当程序每次运行的时候,种子是不一样的,但是在同一个程序中,种子还是同一个,是我没有描述清楚。
import java.util.Random; public class CommonUtil { private static Random rand = null; // 返回一个范围在[0, max)的随机数 public static int nextInt(int max) { if (rand == null) { synchronized (CommonUtil.class) { if (rand == null) { rand = new Random(System.currentTimeMillis()); } } } return rand.nextInt(max); } }
3 楼
xuanyuanyilu
2011-01-14
<div class="quote_title">jorneyR 写道</div>
<div class="quote_div">只使用一个种子,我这里1000个抽40个分页还是比较平均的。<br>如 31 : 1, 31是下标,1是被抽中的次数,这样做是为了统计,如591被抽中了两次<br><br><pre name="code" class="java">31 :1 |46 :1 |56 :1 |66 :1 |98 :1 |99 :1 |106:1 |184:1 |190:1 |207:1 |
225:1 |232:1 |238:1 |246:1 |258:1 |267:1 |323:1 |363:1 |382:1 |385:1 |
472:1 |489:1 |511:1 |518:1 |529:1 |560:1 |583:1 |591:2 |619:1 |633:1 |
654:1 |702:1 |796:1 |822:1 |841:1 |869:1 |937:1 |979:1 |990:1 |</pre>
</div>
<p><br><br>是不是我没有理解对你的意思啊,你说<span style="color: #ff0000;">只使用一个种子</span><br>若是使用种子,并且一直使用这一个种子,这个随机数序列就不会变了啊,所以这种方法是不能用的。</p>
<p> </p>
<p>
</p>
<p>
</p>
<pre name="code" class="java">public static void main(String[] args){
Random rd = new Random(47);
int randnum = 0;
for(int i=0;i<40;i++){
randnum = rd.nextInt(1000);
System.out.println(randnum);
}
}</pre>
运行这个main,每次输出都一样
<div class="quote_div">只使用一个种子,我这里1000个抽40个分页还是比较平均的。<br>如 31 : 1, 31是下标,1是被抽中的次数,这样做是为了统计,如591被抽中了两次<br><br><pre name="code" class="java">31 :1 |46 :1 |56 :1 |66 :1 |98 :1 |99 :1 |106:1 |184:1 |190:1 |207:1 |
225:1 |232:1 |238:1 |246:1 |258:1 |267:1 |323:1 |363:1 |382:1 |385:1 |
472:1 |489:1 |511:1 |518:1 |529:1 |560:1 |583:1 |591:2 |619:1 |633:1 |
654:1 |702:1 |796:1 |822:1 |841:1 |869:1 |937:1 |979:1 |990:1 |</pre>
</div>
<p><br><br>是不是我没有理解对你的意思啊,你说<span style="color: #ff0000;">只使用一个种子</span><br>若是使用种子,并且一直使用这一个种子,这个随机数序列就不会变了啊,所以这种方法是不能用的。</p>
<p> </p>
<p>
</p>
<p>
</p>
<pre name="code" class="java">public static void main(String[] args){
Random rd = new Random(47);
int randnum = 0;
for(int i=0;i<40;i++){
randnum = rd.nextInt(1000);
System.out.println(randnum);
}
}</pre>
运行这个main,每次输出都一样
2 楼
i2534
2011-01-14
据说可以用噪音来实现逼真的伪随机.不过好像需要硬件支持.
1 楼
jorneyR
2011-01-14
只使用一个种子,我这里1000个抽40个分页还是比较平均的。
如 31 : 1, 31是下标,1是被抽中的次数,这样做是为了统计,如591被抽中了两次
如 31 : 1, 31是下标,1是被抽中的次数,这样做是为了统计,如591被抽中了两次
31 :1 |46 :1 |56 :1 |66 :1 |98 :1 |99 :1 |106:1 |184:1 |190:1 |207:1 | 225:1 |232:1 |238:1 |246:1 |258:1 |267:1 |323:1 |363:1 |382:1 |385:1 | 472:1 |489:1 |511:1 |518:1 |529:1 |560:1 |583:1 |591:2 |619:1 |633:1 | 654:1 |702:1 |796:1 |822:1 |841:1 |869:1 |937:1 |979:1 |990:1 |
相关推荐
伪随机数并不是真正的随机数,因为它们是通过确定性的算法计算出来的,但它们的分布和真实随机数非常接近,以至于在许多应用中可以被视为随机。在这个场景中,我们将深入探讨如何使用Python的`random`库以及所谓的...
《SP800-22rev1a 随机数与伪随机数生成》是一份由美国国家标准与技术研究院(NIST)发布的关于随机数和伪随机数生成器的统计测试套件的规范文档。该文档旨在为密码学应用提供一个标准化的测试框架,用于评估随机数和...
从给定的文件信息来看,主要讨论的是两个不同的领域:一是关于Mg-Li合金及其表面处理的问题,另一个是蒙特卡洛法在产生伪随机数中的应用。然而,根据题目要求,我们将集中讨论“蒙特卡洛产生伪随机数”的相关知识点...
伪随机数并不是真正的随机数,而是一系列看起来随机但实际上由确定性算法生成的数列。它们在数学上是可预测的,但对大多数实际应用来说,其行为足够接近随机,以至于无法察觉到这种可预测性。 **srand() 函数**: `...
为了进行加密,我们需要使用更强大的随机数生成器,例如RNGCryptoServiceProvider,这是.NET框架提供的一个加密安全的伪随机数生成器。它使用了Windows操作系统底层的加密服务提供者(CSP)来生成随机数据,这确保了...
它们在数学和计算机科学中广泛使用,因为真正的随机数难以生成,而伪随机数序列通常足够接近于随机,可以满足许多应用的需求。 2. **Verilog**: Verilog是一种硬件描述语言,用于描述数字电子系统的逻辑行为和...
伪随机数并非真正的随机数,因为它们是由确定性算法生成的,但通过精心设计的算法,这些数列可以展现出与真正随机数极其相似的特性。例如,它们应该是均匀分布的,即在所有可能的值中,每个值出现的概率相同;并且...
在IT领域,伪随机数生成器(Pseudo-Random Number Generator, PRNG)是一个至关重要...了解伪随机数生成器的工作原理,以及如何在编程环境中实现和应用,对于提升软件开发技能和理解计算机科学的内在逻辑有着重要意义。
在"suijishu.txt"文件中,可能包含了使用线性同余法生成的伪随机数序列示例,或者对这种方法的进一步讨论和解释。对于开发者来说,理解并掌握这种算法有助于在实际项目中合理地使用随机数生成技术。 总的来说,伪...
在计算机科学和数值计算中,伪随机数生成是模拟随机性的一个重要工具。MATLAB作为一个强大的数值计算软件,提供了多种生成伪随机数的功能。伪随机数并非真正的随机数,因为它们是由确定性的算法生成的,但这些算法...
产生伪随机数的算法在8位单片机中的实现 伪随机数函数是软件开发中一个重要的组件...我们还讨论了伪随机数函数的应用在游戏、模拟、加密等领域。通过本文,读者可以了解伪随机数函数的实现细节,并应用于实际项目中。
伪随机数生成算法的好坏通常根据它们的周期长度、均匀性、随机性和实现的简易度来评价。周期越长,均匀性越好,实现越简单,算法越被认为是好的伪随机数生成算法。在实际应用中,选择合适的算法取决于特定需求和上...
C语言提供了一种简单的方式来生成伪随机数,主要通过`rand()`函数和`srand()`函数。这两个函数通常被包含在`<stdlib.h>`头文件中,而`srand()`函数还依赖于`<time.h>`头文件来获取当前时间,以实现随机数序列的初始...
伪随机数是由确定性算法产生的数列,它们虽然不是真正的随机数,但如果满足一定的统计要求(如均匀性和随机性),就可以作为随机数使用。常见的伪随机数生成算法包括取中法、移位法和同余法。 ##### 取中法 取中法...
综上所述,"基于3-DES算法的伪随机数生成器"是一个利用3-DES算法创建高质量随机数种子的工具,适用于需要高安全性和随机性的应用场景,如加密通信、密码生成等。该软件遵循ANSIX9.17标准,确保了生成的随机数在金融...
伪随机数生成器(PRNG)并不像真正的随机数那样具有完全不可预测性,而是通过数学算法生成一系列看起来随机但实际上可重复的数字序列。在Verilog中实现PRNG,通常会用到移位寄存器和非线性反馈函数。下面我们将深入...
在计算机科学中,伪随机数生成是模拟随机过程的关键技术,尤其在算法设计、加密、游戏开发、统计模拟等领域有着广泛的应用。标题“产生伪随机数”指的是利用特定算法生成看似随机但实际上可预测的数字序列。这个过程...
在电子工程领域,伪随机数生成电路(Pseudo-Random Number Generator, PRNG)和伪随机数产生方法是至关重要的技术。这些数被广泛应用于各种系统,如加密、模拟、测试与验证、以及数字信号处理等。下面我们将深入探讨...
伪随机数是指由确定性算法产生的序列,该序列具有随机性特征但实际是由特定算法生成的,并非真正的随机数。伪随机数在密码学、计算机科学、游戏开发等领域有着广泛的应用。 #### 二、需求分析与设计目标 根据题目...