前端时间面腾讯的时候,一位老师问了一个相当有趣的问题:假设存在一个音乐播放器,里面有一个100首歌的歌单。现在需要做一个随机播放功能,要求不重复的随机播放完一百首歌。当时脑子短路了没想出来,几天突然意识到了问题的解法。

定义一个集合,将歌曲按照编号1-100存进集合,根据集合中剩余的元素数量做rand,每一次播放后删除即可。

简单写了点代码:

#include <iostream>
#include <set>
#include <time.h>
using namespace std; int main() {
srand(time(0));
set <int> st;
for (int i = 1; i <= 10; i++) {
st.insert(i);
}
while (!st.empty()) {
int pos = rand() % st.size();
auto iter = st.begin();
for (int i = 0; i < pos; i++) {
iter++;
}
cout << *iter << " ";
st.erase(iter);
}
return 0;
}

用set做一轮无重复纯随机的更多相关文章

  1. 【Java】Java复习笔记-三大排序算法,堆栈队列,生成无重复的随机数列

    冒泡排序 package com.lcw.bubble; public class BubbleSort { /** * 冒泡排序 * @param args * @author 成鹏致远 */ pu ...

  2. 无插件纯Web HTML5 3D机房 进阶篇(新增设备、线缆、巡查等功能)

    前情提要 前阵子写了一篇无插件纯Web 3D机房,介绍了如何用html5在网页上创建无插件的精美3d机房场景.这两个月以来,陆续收到很多朋友的鼓(膝)励(盖),受宠若惊之余,对索要源代码的朋友都已经尽 ...

  3. [LeetCode] Longest Substring Without Repeating Characters 最长无重复子串

    Given a string, find the length of the longest substring without repeating characters. For example, ...

  4. 无插件纯web 3D机房 (第四季:大型园区、地球仪效果和其他扩展应用)

    前言 初次见面的朋友们大家好,这篇文章是"无插件纯web 3D机房"系列的第四季,感兴趣的朋友可从头开始观看,以下是正确的阅读顺序: 无插件纯web 3D机房(第一季:从零开始搭建 ...

  5. 从无重复大数组找TOP N元素的最优解说起

    有一类面试题,既可以考察工程师算法.也可以兼顾实践应用.甚至创新思维,这些题目便是好的题目,有区分度表现为可以有一般解,也可以有最优解.最近就发现了一个这样的好题目,拿出来晒一晒. 1 题目 原文: ...

  6. hunnu 11313 无重复元素序列的最长公共子序列转化成最长递增子序列 求法及证明

    题目:http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=11313 湖师大的比赛,见我的另一篇水题题解,这里要说的 ...

  7. C#生成无重复的随机数

    大一学期末的时候做课程设计时遇到过生成无重复随机数的问题,今天自己也写出来了: static int[] Create_Value() { Random ran = new Random(); //生 ...

  8. leetcode刷题第三天<无重复字符的最长子串>

    给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 : 输入: "abcabcbb" 输出: 解释: 因为无重复字符的最长子串是 . 示例 : 输入: &quo ...

  9. Set.js--创建无重复值的无序集合

    Set 集合,不同于 Array,是一种没有重复值的集合. 以下代码出自于<JavaScript 权威指南(第六版)>P217,注意:这里并不是指 es6 / es2015 中的 Set ...

  10. [LeetCode] Longest Substring Without Repeating Characters 最长无重复字符的子串

    Given a string, find the length of the longest substring without repeating characters. Example 1: In ...

随机推荐

  1. Laravel - 解决 $.ajax success 返回的数据为空的问题 (后台为laravel)

    原因之一 :  后台 dump()打印 , 去掉或者注释就好了

  2. Go-函数-func

  3. [转帖]Region Merge Config

    TiKV replicates a segment of data in Regions via the Raft state machine. As data writes increase, a ...

  4. RPM安装的Oracle19c 修改init.ora进行修复以及最简单开机启动Oracle的方法

    RPM安装的Oracle19c 修改init.ora进行修复以及最简单开机启动Oracle的方法 背景 今天开始使用自己心的ThinkBook14 的笔记本 因为已经没有了 Linux测试环境供我使用 ...

  5. [转帖]sqlserver on linux vs windows

    简单对比下sqlserver on windows与linux的特点,发现新的继续添加 对比项 sqlserver on windows sqlserver on Linux 备注 费用 需要wind ...

  6. 【转帖】Linux 系统双网卡绑定 bond的7种模式

    第一种模式:mod=0 ,即:(balance-rr) Round-robin policy(平衡抡循环策略)第二种模式:mod=1,即: (active-backup) Active-backup ...

  7. jconsole的简单学习

    摘要 jconsole 是JDK自带的一款图形化监测工具 他可以监测本地程序,也可以检测远程的机器 在没有其他监控手段可以使用的情况下可以快速进行必要的监测 使用方法也比较简单. 本地监控 jcons ...

  8. frp 的简单使用

    在出差现场. 开着VPN 就没法用出差现场的网络, 想了想 好像 只能用 frp 来搞一下比较好 借了下同事的vps 进行相应的处理 进行简单的内容穿透工作. 1. 下载相关的文件. wget htt ...

  9. 银河麒麟安装LLDB的方法以及调试 dump 文件 (未完成)

    今天同事要进行 lldb进行调试dotnet的bug 本来在x86 上面进行相应的处理 但是发现报错. 没办法 正好有一台借来的arm服务器就搞了一下. 简单记录一下安装方法 1. 安装 apt的so ...

  10. Mysql 查看varchar和char类型表的列长度

    SELECT table_name, SUM(character_maximum_length) AS sum_length FROM information_schema.columns WHERE ...