C# 之 随机数应用 -- 洗牌算法

简介: 随机数实例洗牌算法,超级简单的真随机算法。

洗牌算法

这个逻辑很简单却实现了真随机:对于给定的 n 个元素,生成的那个排列,每一个元素都能等概率地出现在每一个位置。

换句话说,每一个位置都能等概率地放置每个元素。

实现思路:

// 循环牌组
for (int i = 0; i < 牌组长度; i++) {
    // 取牌组中的第i个索引的牌
    temp = 牌组[i];
    // 在0-牌组最大长度之间 随机一个数
    int randomIndex = 随机(0, 牌组.Length);
    // 交换位置
    牌组[i] = 牌组[randomIndex];
    牌组[randomIndex] = temp;
}

C# 代码:

public static void Shuffle(ref int[] pokeArr)
{
     Random myRandom = new Random();
     for (int i = 0; i < pokeArr.Length; i++)
     {
         int temp = pokeArr[i];
         int randomIndex = myRandom.Next(pokeArr.Length);
         pokeArr[i] = pokeArr[randomIndex];
         pokeArr[randomIndex] = temp;
     }
}

在Unity中用的话也可将上面的随机方法修改为:

 int randomIndex = UnityEngine.Random.Range(0, Length);

以[1,2,3,..,53,54]的数组 来模拟一副牌,进行30测试。

结果如下图:
测试结果

相关文章
|
19天前
|
机器学习/深度学习 数据采集 自然语言处理
理解并应用机器学习算法:神经网络深度解析
【5月更文挑战第15天】本文深入解析了神经网络的基本原理和关键组成,包括神经元、层、权重、偏置及损失函数。介绍了神经网络在图像识别、NLP等领域的应用,并涵盖了从数据预处理、选择网络结构到训练与评估的实践流程。理解并掌握这些知识,有助于更好地运用神经网络解决实际问题。随着技术发展,神经网络未来潜力无限。
|
15天前
|
算法 Java
并发垃圾回收算法对于大规模服务器应用的优势
并发垃圾回收算法对于大规模服务器应用的优势
|
5天前
|
数据采集 监控 算法
应用动态规划算法解决可转债软件中的最优买卖时机问题
使用动态规划算法解决可转债市场的最佳买卖时机问题。定义状态dp[i][0](持有可转债的最大利润)和dp[i][1](不持有可转债的最大利润),通过状态转移方程更新状态,以max函数求解。提供的Python代码示例展示了如何计算最大利润。将此算法集成到软件中,结合网络爬虫获取实时价格,自动计算并提供买卖建议,助力投资者做出更明智的决策。
39 0
|
6天前
|
机器学习/深度学习 人工智能 监控
人工智能在图像识别中的应用:基于深度学习的算法实现
人工智能在图像识别中的应用:基于深度学习的算法实现
22 1
|
8天前
|
存储 算法 容器
ArrayList | 简单的洗牌算法
这是一个关于创建和洗牌扑克牌程序的摘要: 程序包括以下步骤: 1. 创建一副扑克牌(52张,不包括大小王)。 2. 洗牌,随机打乱扑克牌的顺序。 3. 揭牌,模拟玩家轮流从牌堆中抽取指定数量的牌。
22 4
|
11天前
|
存储 监控 C#
在上网行为管理软件中实现C#的跨平台应用
本文介绍了使用C#实现跨平台上网行为管理应用的方法。首先,通过.NET Core SDK创建多操作系统兼容的开发环境。接着,利用HttpClient捕获和记录HTTP请求,示例代码展示了如何捕获请求URL。然后,使用SQLite存储网络行为数据,并提供了创建数据库和插入数据的代码。此外,还讨论了如何跨平台编译应用程序以及如何自动将数据提交到远程服务器。通过这些步骤,可以构建一个能在不同操作系统上运行的上网行为管理系统。
62 3
|
16天前
|
算法 搜索推荐 Java
滚雪球学Java(33):数组算法大揭秘:应用案例实战分享
【5月更文挑战第8天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
43 8
滚雪球学Java(33):数组算法大揭秘:应用案例实战分享
|
19天前
|
算法 Python
利用贝叶斯算法对简单应用实现预测分类
利用贝叶斯算法对简单应用实现预测分类
|
19天前
|
机器学习/深度学习 算法 API
【Paddle】PCA线性代数基础 + 领域应用:人脸识别算法(1.1w字超详细:附公式、代码)
【Paddle】PCA线性代数基础 + 领域应用:人脸识别算法(1.1w字超详细:附公式、代码)
21 0
|
19天前
|
机器学习/深度学习 数据采集 算法
深入理解并应用机器学习算法:支持向量机(SVM)
【5月更文挑战第13天】支持向量机(SVM)是监督学习中的强分类算法,用于文本分类、图像识别等领域。它寻找超平面最大化间隔,支持向量是离超平面最近的样本点。SVM通过核函数处理非线性数据,软间隔和正则化避免过拟合。应用步骤包括数据预处理、选择核函数、训练模型、评估性能及应用预测。优点是高效、鲁棒和泛化能力强,但对参数敏感、不适合大规模数据集且对缺失数据敏感。理解SVM原理有助于优化实际问题的解决方案。