使用C#如何創(chuàng)建人名或其他物體隨機(jī)分組
C#創(chuàng)建人名或其他物體隨機(jī)分組
假設(shè)您有一群人,您想將他們隨機(jī)分配到多個(gè)團(tuán)隊(duì)。
public class Randomizer
{
public static void Randomize<T>(T[] items)
{
Random rand = new Random();
// For each spot in the array, pick
// a random item to swap into that spot.
for (int i = 0; i < items.Length - 1; i++)
{
int j = rand.Next(i, items.Length);
T temp = items[i];
items[i] = items[j];
items[j] = temp;
}
}
}private void Randomize_Click(object sender, EventArgs e)
{
// Put the items in an array.
string[] items = txtItems.Lines;
// Randomize.
Randomizer.Randomize(items);
// Display the result.
txtResult.Lines = items;
txtResult.Select(0, 0);
}此示例使用以下代碼將人員分配到組
// Assign the people to groups.
private void btnAssign_Click(object sender, EventArgs e)
{
// Get the names into an array.
int num_people = lstPeople.Items.Count;
string[] names = new string[num_people];
lstPeople.Items.CopyTo(names, 0);
// Randomize.
Randomizer.Randomize(names);
// Divide the names into groups.
int num_groups = int.Parse(txtNumGroups.Text);
lstResult.Items.Clear();
int group_num = 0;
for (int i = 0; i < num_people; i++)
{
lstResult.Items.Add(group_num + " " + names[i]);
group_num = ++group_num % num_groups;
}
}
代碼首先將lstPeople ListBox
中的名稱(chēng)復(fù)制到字符串?dāng)?shù)組中。然后使用Randomizer.Randommize對(duì)數(shù)組進(jìn)行隨機(jī)化。
然后程序循環(huán)遍歷數(shù)組,將每個(gè)姓名添加到lstResult ListBox中。它將group_num值添加到每個(gè)人的姓名中,為其賦予一個(gè)組號(hào)。然后,它增加group_num并將結(jié)果取模num_groups,因此group_num值循環(huán)遍歷組號(hào) 0、1、2、...、num_groups - 1、0、1、2、...
lstResult ListBox的Sorted屬性設(shè)置為true,因此結(jié)果將按組號(hào)排序顯示。
注意:
- 如果隊(duì)伍數(shù)不能均勻地分清人數(shù)
- 那么一些第一名的隊(duì)伍會(huì)比其他隊(duì)伍多一個(gè)人
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
C#中DataGridView導(dǎo)出Excel的兩種方法
這篇文章主要介紹了C#中DataGridView導(dǎo)出Excel的兩種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
基于C#?實(shí)現(xiàn)?OPC?DA?Server的問(wèn)題小結(jié)
這篇文章主要介紹了基于C#?實(shí)現(xiàn)?OPC?DA?Server的相關(guān)知識(shí),關(guān)于C#怎么編寫(xiě)一個(gè)進(jìn)程外的DCOM組件,這里先不做介紹了,這里主要介紹下OPC?DA?Server?的第一個(gè)接口,感興趣的朋友跟隨小編一起看看吧2024-04-04
C#調(diào)用Oracle存儲(chǔ)過(guò)程的方法
這篇文章主要介紹了C#調(diào)用Oracle存儲(chǔ)過(guò)程的方法,包含數(shù)據(jù)庫(kù)及C#對(duì)應(yīng)的調(diào)用代碼,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-01-01
C# networkcomms 3.0實(shí)現(xiàn)模擬登陸總結(jié)
這篇文章主要介紹了C# networkcomms 3.0實(shí)現(xiàn)模擬登陸總結(jié),需要的朋友可以參考下2017-06-06

