c# - 如何在 C# 中均匀地共享随机数
问题描述
我正在考虑在不同数量的人之间共享固定数量的 32 个团队。
当然,32 可能并不总是整除,但为了这个练习,假设我希望在 4 人之间共享 32 个团队,因此每人最多 8 个团队。
int max = 32 / numb;
foreach (string value in wcteams)
{
//Assigning teams to players
int selection = random.Next(0, numb);
int[] counter = new int[max];
counter[selection] = counter[selection] + 1;
if (counter[selection] < max)
{
Console.WriteLine(inputtedNames[selection] + " has drawn " + value);
}
}
现在,我可以运行该代码,我会得到一份随机选择的人员及其团队的列表。但限制不会实施,一些球员最终会比其他球员拥有更多的球队。
我了解以下代码:
counter[selection] = counter[selection] + 1;
无法将用户收到的团队数量相加,我是否在正确的轨道上计算随机选择玩家的次数,或者我应该采用其他方法吗?
解决方案
您的代码中的一个问题是您正在循环内初始化计数器。如果 count[selection] > max 会发生什么?你离开团队,不要把它分配给其他人。
试试下面的代码。
int numb = 4;
int max = 32 / numb;
int[] counter = new int[max];
foreach (string value in wcteams)
{
bool selectionComplete = false;
while(!selectionComplete)
{
int selection = random.Next(0, numb);
counter[selection] = counter[selection] + 1;
if (counter[selection] <= max)
{
selectionComplete = true;
Console.WriteLine(selection + " has drawn " + value);
}
}
}
推荐阅读
- sql - SQL BQ 返回用户评价最好和最差的电影
- java - 将多个 CompletableFuture 与返回结果合二为一
- fullcalendar - 如何更改 FullCalendar 日期标签?
- xml - 如何获取有关 XSLT 处理器运行的 XSL 版本的信息
- python - 使用 Python/numpy 从稀疏表示中有效地合并重复像素(通过求和)
- javascript - 无论类型如何,如何在任何 HTML 组件中设置(显示)值
- android - 当我按下相机 2 onImageAvailable 一次拍摄时,图像将被保存 10 次
- spring-batch - 使用 MultiResourceItemReader 时没有资源读取错误
- firemonkey - 慢速缩放和 Firemonkey TeeChart 界面
- spring-boot - Spring Boot 应用程序是否可以使用用 Clojure 编写的休息处理程序(REST API)?