如何实现洗牌算法?

el/2024/7/24 2:47:37

day09

题目描述:

        开发一款扑克游戏,需编写一套洗牌算法,公平的洗牌是将洗好的牌存储在一个整型数组里,每张牌被放在任何一个位置的概率是相等的.

解析:

        定义一个洗牌函数,函数内用tmp数组存储1~54表示54张牌,然后对54张牌进行循环,每次循环时,通过随机函数随机从0到剩余牌数中生成一个数返回做索引,从tmp数组中取出这个索引对应的牌,存到洗牌后的数组cards中,取出这张牌后并删除该牌在tmp数组内的位置,保证数组从0到当前剩余的牌数中可以根据随机生成的索引取出剩余的牌,最后得到洗好的牌都存在数组cards中,实现代码为

<script>

  var num=54;

  function wash_card(num){

    var cards=[],tmp=[],index;

    for(var i=0;i<num;i++){

      tmp[i]=i+1;

    }

    for(i=0;i<num;i++){

      index=Math.floor(Math.random()*(num-i));

      cards[i]=tmp[index];

      tmp.splice(index,1);

    }

  return cards;

  }

  console.log(wash_card(num));

</script>


http://www.ngui.cc/el/3419323.html

相关文章

球的反弹高度有多高?

day11 题目描述: 一球从100米高度自由落下&#xff0c;每次落地后反弹回原高度的一半&#xff0c;再落下。求它在第十次落地时&#xff0c;共经过多少米&#xff1f;第十次反弹多高&#xff1f; 解析: 设初始总高度为100米&#xff0c;球每次下落高度反弹回的高度为上一次的一…

如何找出1000以内的“完数“

day12 题目描述: 如果一个数恰好等于它的因子之和&#xff0c;这个数就称为"完数"&#xff0c;例如6123.编程找出1000以内的所有完数。 解析&#xff1a; 外层循环1000次&#xff0c;每次循环得到的i传入下个循环内&#xff0c;内部循环求解出符合i整除k等于0的数。…

如何在本地创建分支并推送到码云上

第一步: git branch 查看当前所在的分支&#xff0c;确保在master分支上 第二步: git checkout -b example 在当前分支上(也就是master分支)创建一个example分支&#xff0c;并切换到该分支上 第三步: git push -u or…

如何获取规定的排列组合?

day13 题目描述: 将一组数字&#xff0c;字母或符号进行排列&#xff0c;以得到不同的组合顺序&#xff0c;例如1&#xff0c;2&#xff0c;3这三个数的排列组合有:123,132,213,231,312,321. 解析&#xff1a; 可以使用递归将问题切割为较小的单元进行排列组合&#xff0c;如…

快速排序--C语言

一、快速排序算法&#xff08;Quicksort&#xff09; 1:定义&#xff1a; 快速排序由C. A. R. Hoare在1962年提出。快速排序是对冒泡排序的一种改进&#xff0c;采用了一种分治的策略。 2&#xff1a;基本思想&#xff1a; 通过一趟排序将要排序的数据分割成独立的两部分&#…

浅谈Java多线程基础

一: 线程和进程 进程: 进程是操作系统结构的基础&#xff1b;是一次程序的执行&#xff1b;是一个程序及其数据在处理机上顺序执行时所发生的活动。操作系统中&#xff0c;几乎所有运行中的任务对应一条进程,进程具有并发性&#xff0c;它可以同其他进程一起并发执行&#xff…

HTML+CSS基础----盒模型

在谈盒模型之前,我们先了解下什么是块级元素,什么是行内元素. 块级元素: 如<p>,<li>,<h1>等等; 默认情况下&#xff0c;块级元素会另起一行&#xff0c;并尽可能的充满整个容器。 块级元素可以包含行内元素和其他块级元素&#xff0c;相比于行内元素可以创…

浅谈css几种常用的选择器

首先我们得了解,什么是选择器? 每一条css样式定义由两部分组成&#xff0c;形式如下&#xff1a; [code] 选择器{样式} [/code] 在{}之前的部分就是“选择器”。 “选择器”指明了{}中的“样式”的作用对象&#xff0c;也就是“样式”作用于网页中的哪些元素.要使用css对HTML页…

PTA乙级过程记录

目录 1. PAT乙级1001 2. PAT乙级1002 3. PAT乙级1004 4. PAT乙级1006 PAT乙级1001 害死人不偿命的(3n1)猜想 &#xff08;15 分&#xff09; 作者: CHEN, Yue 单位: 浙江大学 时间限制: 400 ms 内存限制: 64 MB 代码长度限制: 16 KB **卡拉兹(Callatz)猜想&#xff1a;** 对…

c++模板-数组类

题目&#xff1a;编写一个程序&#xff0c;使用类模板对数组元素进行排序、倒置、查找和求和。 提示】&#xff1a;设计一个类模板。 Template Class Array{ … } 具有对数组元素进行排序、倒置、查找和求和功能&#xff0c;然后产生类型实参分别为int型和double类型的两个模板…