slandarer 2021-08-15 19:00:26 阅读数:668
事情是這樣的,之前寫了一個刮獎特效的MATLAB 程序:
傳送門:
七夕節還不知道送啥,教你用MATLAB制作一款刮刮樂抽獎特效,讓她的手氣决定她的禮物
其中有通過隨機數來决定顯示字符的部分,但是有讀者嘗試將程序打包後,發現結果是固定的。
稍微研究了一下發現了問題所在:
我們在matlab運行程序後,軟件會自己更改隨機數種子,但是打包成exe文件後,經過了中間變換,脫離軟件後程序會使用固定的隨機數種子,這就導致每次生成的隨機數都是固定的。
這樣我們很容易就能想到C語言的類似操作,C語言生成隨機數時,都要依據時間重新定義隨機數種子:
srand(time(NULL));
rand()
於是我們可以在MATLAB中也采用類似操作,
只需要將rand()
前加上如下代碼:
tempTime=clock();
second=round(tempTime(6)+60*tempTime(5)+24*60*tempTime(4));
rng(second)
就可以在一天中每一秒都設置不同的隨機數種子,當然,與時間相關的其他任意整數均可,大家可以稍作改變,將代碼更改後再打包便不會出現隨機數固定的問題。
原:
randNum=rand();
numRange=probVal>randNum;
strPos=find(numRange,1);
改:
tempTime=clock();
second=round(tempTime(6)+60*tempTime(5)+24*60*tempTime(4));
rng(second)
randNum=rand();
numRange=probVal>randNum;
strPos=find(numRange,1);
版权声明:本文为[slandarer]所创,转载请带上原文链接,感谢。 https://gsmany.com/2021/08/20210815190011547l.html