iT邦幫忙

2023 iThome 鐵人賽

DAY 17
0
自我挑戰組

突然冒出的自學計畫系列 第 17

#Day17 不是,我看不懂ㄟ?

  • 分享至 

  • xImage
  •  

昨天寫random的時候是看網路資料寫ㄉ
今天回去研究簡報上的code,還是好困惑ㄛ
先附上code

int seed = 123;
Random rand = new Random(seed);

int[] count = new int[10];
for (k = 0; k < 10; ++k)
{
    count[k] = 0; //他有存在的必要嗎
}
const int N = 1000;
for (i = 0; i < N; ++i)
{
    k = rand.Next() % 10; //%10到底是什麼
    ++count[k];
    Console.WriteLine(count[k]);
} 

部分來源:台大開放式課程

我大概從第2行之後就不知道他在幹嘛ㄌ

首先,他new了一個list
然後他用一個迴圈把list裡面的東西都變0
但有趣的是,當我把迴圈整個註解掉,重跑一次list裡面的東西仍然都是0

接下來是更令人困惑的下半部
首先他設定了一個int N,然後拿來當迴圈範圍,也完全沒有出現在迴圈內部
但神奇的是,修改那個N的大小除了按照預期修改生產出亂數的數量,他還會改變亂數的生成範圍?
後來我發現,無論是否使用seed,亂數的生成都會由小到大排列。
使用seed時,當修改N的數字而縮減範圍,留下的部分就剛好會在N的範圍裡
例如當N=10,留下的數字都會<10
我猜應該與%10有關?

最神奇的地方來了:
當我去掉%10,他就會報錯!
以我原先的認知,k = rand.Next() 這個東西應該是可以單獨運行的
因此目前猜測與++count[k]; 有關係
這一行的k可以換成數字,結果確實會變,不過還是不能很確定用途。

嗯沒綽 今天的文完全沒有營養,全是問題ouo


上一篇
#Day16 array、random、new
下一篇
#Day18 猜猜數字(一)
系列文
突然冒出的自學計畫30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言