What are random seed values?什麼是隨機種子? - 台部落
文章推薦指數: 80 %
... 而大部分權威資料都來自國外,所以就組織組員翻譯來自GH官方論壇的帖子,以便學習。
下面是一篇David的帖子講解隨機數原理,由黃思穎同學翻譯。
請輸入正確的登錄賬號或密碼
註冊
忘記密碼
首頁
gha開發
正文
什麼是隨機種子
原創
huaxiamengqing
2018-09-0318:55
我們來自江河夢小組(ScondEffectGroup),工程用到gh,所以必須學習好GH插件,而大部分權威資料都來自國外,所以就組織組員翻譯來自GH官方論壇的帖子,以便學習。
下面是一篇David的帖子講解隨機數原理,由黃思穎同學翻譯。
Whatarerandomseedvalues?什麼是隨機種子?
Postedby
DavidRuttenonOctober20, 2012at9:52amin
FAQ(FrequentQuestionsandProblems)Send
MessageViewDiscussionsMostcomponentsinGrasshopperthatutilizerandomnessonsomelevelhaveaninputcalled'Seed'.Sowhatisaseedfor,whywouldyouwanttochangeitandhowdoyouknowwhattochangeitto?
多數使用隨機數的計算器都有一個輸入端叫做種子。
因此種子是用來幹什麼的?爲什麼你試圖改變它?你如何知道將它改變成什麼?
First,let'stalkaboutrandomness.Randomnessisaproblemincomputingbecausedigitalcomputersare
deterministic.Ifyougivethemtheexactsameinstructionstheyalwaysendupwiththeexactsameresult.Itturnsouttobemathematicallyimpossibletogenerate
truerandomnumbersusingadigitalcomputer,butitisfairlyeasytogenerate
pseudo-randomnumbers.Thisisactuallynotbadnewsaspseudo-randomnumbers-unlikerealrandomnumbers-canbegeneratedagainandagainandyou'llendupwith
thesamerandomnumberseverytime.Beingabletogetthesamerandomnumbersondemandincreasesthereliabilityofthesenumbersequenceswhichinturnmakesthemeasiertouse.
首先說說隨機。
隨機是計算的一個問題,如果你輸入相同的命令將總是以相同的結果終止。
使用數學計算器產生真實的隨機數這在數學上被證明是不可能的,但是生成虛擬的隨機數字相當容易。
這對於僞隨機數來說不是個壞消息,不像真實的隨機數字,它們可以被多次重複生成,你每次都將得到相同的隨機數。
可以按要求生成相同的隨機數增加了這些數字序列的可靠度,反過來也讓這些數字更簡單被使用。
Pseudo-randomnumbersarenumbersthathavecertaincharacteristics.Notethatwhenwetalkaboutrandomnumberswearereallytalkingaboutnumbers.Plural.It'seasytogenerate
onlyasingleone,asxkcdsoeloquentlyputit:
僞隨機數是帶有明確特徵的數字,明確一點就是當我們談論隨機數時我們確實是在談論數字。
單個複數很容易生成,用門羅漫畫的形式表現出來:(xkcd由蘭德爾.門羅所繪製的網絡漫畫)
Sowhatarethesecharacteristicsthatdefinepseudo-randomness?Withoutbeingactuallycorrect,Icansumthemupasfollows:
§ Thesequenceofgeneratednumbersshouldneverrepeatitself*
§ Thenumbersinthesequenceoughttobespreadevenlyacrossthenumericdomain**
因此定義僞隨機數的這些特徵是什麼呢?可能並非十分正確,我總結了如下兩點:
生成數字的序列本身並不可複製。
序列中的數字應該被平均分配到數字域中。
Therearealotofdifferentalgorithmsoutthere,somebetterthanothers,somefasterthanothers,somesolvingveryspecificproblemswhileothersaremoregeneric.ThegeneratorusedinGrasshopperis
thestandardMicrosoft.NETRandom,basedonDonaldKnuth'ssubtractivealgorithm.
大量不同的算法有些比其他好,有些比其他快,有些可以解決特殊問題然而其他的卻只能解決一般問題。
GH中的運算法是基於DonaldKnuth的減法法則的標準微軟.NET隨機。
Solet'simaginewewant
randomintegersbetween0and10.Whatwouldabadrandomsequencelooklike?
因此想象一下我們想要得到從1到10的隨機整數。
不好的序列會是怎樣的呢?
§ 33333333333333333333(aboutasbadasitgets)
§ 01234567890123456789(notrandomatall)非隨機
§ 13253912425112815234(toomanylownumbers)
§ 28460982486422514862(toomanyevennumbers)
Sowhataboutgoodsequences?Well,here'safew:好的序列是:
§ 69120428572919253192(sure,whynot)
§ 62534197802164589509(looksaboutright)
§ 18523457952102109764(Isuppose)
§ 90648315276146019756(whatever)
Therearealotofvalidpseudo-randomsequences.(Seriously,loads).Soevenifwehaveagoodpseudo-randomgeneratorwemaybegivenarandomsequencethatisn'tentirelytoourliking.
Theshorterthesequenceweneed,themorelikelyitisthat
statisticalaberrationsinvalidatethatparticularsequenceforus.Whatweneedissomecontroloverthegeneratorsowedon'tjustget
arepeatablesequence,butarepeatablesequenceweactuallylike.
這裏有許多有效的僞隨機序列。
因此即使我們有很好的僞隨機數生產器,我們仍然可能得到並非完全照我們所想的隨機序列。
我們需要的序列越短,越有可能出現統計學的越軌使特殊的序列產生。
Enterseedvalues.Therandomgeneratorrequiresaseedvaluebeforeitcangeneratearandomsequence.Theseseedvaluesarealwaysintegers,andtheycanbeanyvalid32-bitinteger.Everyuniqueseedvalue
resultsinthesamesequence.Everytime.
輸入種子值。
隨機運算器在運行隨機序列之前需要一個種子值。
這些種子值總是整數,他們可以是任意32字節整數。
每次每個單一的種子值導致的是相同的序列。
Unfortunatelythereisnoclearrelationshipbetweenseedsandsequences.Changingtheseedvaluefrom5to6willresultinacompletelydifferencerandomsequence,andtwosequencesthatareverysimilar
maywellhavetowildlydifferentseeds.Thereisthereforenowaytoguessagoodseedvalue,itiscompletely
trial-and-error.Alsobecauseofthisextremelydiscontinuousnature,youcannotusetoolslikeGalapagostooptimizeaseedvalue.、
不幸的是種子和結果之間沒有清晰地關係。
將種子值從5變爲6將導致完全不同的隨機序列,兩個非常近似的結果也許是相當不同的種子。
因此沒有方法去猜想一個好的種子值,完全是不斷的嘗試。
同樣因爲這個完全不連續的性質,你不能使用像Galapagos這樣的工具來優化種子值。
Ifyouarelookingforapseudo-randomsequencewhichhascustomcharacteristics,youmaywellenduphavingtowriteyourowngeneratoralgorithm.AskquestionsaboutthisontheGrasshopper
mainforumorthe
VB/C#forum.
如果你尋求有規範特徵的僞隨機序列,最終可能必須自己編寫序列運算法則。
關於這個的問題請於GH或VB/C#論壇尋求答案。
Conclusion:Seedvaluesareintegersthatdefinethe
exact
sequenceofpseudo-randomnumbers,butthere'snowayofknowingaheadoftimewhatsequenceitwillbeandthere'snowayof
tweaking
asequencebyslightlychangingtheseed.Eventhetiniestchangeinseedvaluewillresultinaradicallydifferentrandomsequence.
結論:種子值是定義僞隨機數字精確序列的整數,但是沒有方法提前預知序列是多少,也沒有辦法調整序列僅僅靠改變種子。
甚至種子值最小的變化也將導致徹底不同的隨機序列。
--
DavidRutten
[email protected]
Poprad,Slovakia
*Thisisnotactuallypossible.Afiniteamountofnumbersalwaysrepeatsitselfeventually.
事實上這並不可能,A限定的所有數字最終經常進行自我複製。
**Thisshouldonlybetrueforlongenoughsequences,shortsequencesareallowedtoclustertheirvaluessomewhat.
這僅僅對於足夠長的序列才正確,短的序列多少允許值的聚集。
Interestinglinksforfurtherreading:
CodingHorror:ComputersareLouseRandomNumberGenerators
StackOverflow:Whendorandomnumbersstartrepeating?
Tags:Random,
numbers,
pseudo-random,
seed
原文鏈接:http://www.grasshopper3d.com/forum/topics/what-are-random-seed-values
發表評論
登录
所有評論
還沒有人評論,想成為第一個評論的人麼?請在上方評論欄輸入並且點擊發布.
相關文章
AddingGHAlibraryiconstotheGrasshopperbanner
huaxiamengqing
2018-09-0318:55:13
CreatingaComponentwithavariablenumberofoutputparameters(創建一個動態輸出參數的計算器)
huaxiamengqing
2018-09-0318:55:13
犀牛軟件的硬件配置
huaxiamengqing
2018-09-0318:55:13
犀牛和gh的多線程問題
huaxiamengqing
2018-09-0318:55:13
GH的熱鍵,只要用gh都要拜讀一下吧
huaxiamengqing
2018-09-0318:55:13
GH排序計算器解讀
huaxiamengqing
2018-09-0318:55:13
gh列表交叉原理
huaxiamengqing
2018-09-0318:55:13
當你遇到問題時,如何去獲取幫助
huaxiamengqing
2018-09-0318:55:13
H
huaxiamengqing
24小時熱門文章
TechEmpower21輪Web框架性能評測--C#的性能和Rust、C++並駕齊驅TechEmpower最新一輪的性能測試出爐,ASP.NETCore依舊錶現不俗
Java開發學習(二十)----AOP總結
(一)區塊鏈的共識算法:整體介紹及分叉的通俗講解
WCF學習研究推薦blog
最新文章
什麼是隨機種子
最新評論文章
SpringBoot統一參數校驗、統一異常、統一響應,這纔是優雅的處理方式!
winforminput輸入數值(可以小數,負數)
For健康,還在糾結“喫什麼”?答案在這裏!——營養膳食的基礎準則
延伸文章資訊
- 1为什么我的Python Random的seed不起作用? - CodeAntenna
python random seed原理_为什么我的Python Random的seed不起作用? ... 当我调用这个函数时,我发现这100个随机数只是10组或9组随机数,而不是100组。
- 2numpy.random.seed()的使用实例解析_weixin_39754616的博客
python random seed原理_numpy.random.seed()的使用实例解析. weixin_39754616 于 2020-12-16 06:55:26 发布 900 收藏....
- 3Python seed() 函数| 菜鸟教程
注意:seed()是不能直接访问的,需要导入random 模块,然后通过random 静态对象调用该方法。 参数. x -- 改变随机数生成器的种子seed。如果你不了解其原理,你不必特别去设 ...
- 4為什麼我的Python Random的seed不起作用? - 程式庫
python random seed原理_為什麼我的Python Random的seed不起作用? Python Random Seed原理. 我正在嘗試實現一個演算法,併為此構建了一個類:cl...
- 5偽隨機性- 維基百科,自由的百科全書 - Wikipedia
... 种子 int rand(void) // 生成伪随机数 { next = next * 1103515245 + 12345; return (unsigned int) (next /...