matlab 0-100随机数,添加到100的随机数:matlab
我經常看到這樣的錯誤:要用給定的和來生成隨機數,我們只需要使用一個一致的隨機集,并且只需對它們進行縮放。但是,如果你這樣做的話,結果真的都是隨機的嗎?
在兩個維度上嘗試這個簡單的測試。生成一個巨大的隨機樣本,然后將它們縮放為1。我將使用bsxfan來進行縮放。xy?=?rand(10000000,2);xy?=?bsxfun(@times,xy,1./sum(xy,2));hist(xy(:,1),100)
如果它們是真正一致隨機的,那么x坐標就會是一致的,就像y坐標一樣。任何價值都同樣有可能發生。實際上,對于兩點和1,它們必須沿著(0,1),(1,0)兩個點在(x,y)平面上的連線。如果要使點是一致的,沿這條線的任何點都必須是同樣可能的。
顯然,當我使用縮放解時,均勻性會失敗。這條線上的任何一點都不太可能。我們可以看到同樣的事情發生在三維。請注意,在這里的三維圖中,三角形區域中心的點更加密集。這是不一致的反映。xyz?=?rand(10000,3);xyz?=?bsxfun(@times,xyz,1./sum(xyz,2));plot3(xyz(:,1),xyz(:,2),xyz(:,3),'.')view(70,35)box?ongrid?on
同樣,簡單的縮放解決方案也失敗了。它根本沒有在感興趣的領域產生真正一致的結果。
我們能做得更好嗎?嗯,是的。二維中的一個簡單解決方案是生成一個隨機數,表示連接點(0,1)和1,0的直線上的距離。t?=?rand(10000000,1);xy?=?t*[0?1]?+?(1-t)*[1?0];hist(xy(:,1),100)
可以證明,單位方格中方程x+y=1所定義的直線上的任何點現在都同樣有可能被選擇。這反映在漂亮的,平坦的直方圖。
大衛·施瓦茨提出的分類技巧在n維中有效嗎?很明顯,它是在二維中這樣做的,下面的數字表明它是在三維的情況下這樣做的。在沒有深入考慮這個問題的情況下,我相信它將適用于這個基本的問題,在n個維度上。n?=?10000;uv?=?[zeros(n,1),sort(rand(n,2),2),ones(n,1)];xyz?=?diff(uv,[],2);plot3(xyz(:,1),xyz(:,2),xyz(:,3),'.')box?ongrid?onview(70,35)
還可以下載該功能。隨機固定筆在文件交換中羅杰·斯塔福德的貢獻。這是在單位超立方體中生成真正一致的隨機集的更一般的解,具有任意給定的固定和。因此,若要生成位于單元3-立方體中的隨機點集,其約束條件是它們之和為1.25.xyz?=?randfixedsum(3,10000,1.25,0,1)';plot3(xyz(:,1),xyz(:,2),xyz(:,3),'.')view(70,35)box?ongrid?on
總結
以上是生活随笔為你收集整理的matlab 0-100随机数,添加到100的随机数:matlab的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 破发是什么意思?可转债破发怎么办
- 下一篇: matlab人脸追踪,求大神帮助我这个菜