384. Shuffle an Array

c++ random函数:https://www.jb51.net/article/124108.htm

rand()不需要参数,它会返回一个从0到最大随机数的任意整数,最大随机数的大小通常是固定的一个大整数。 这样,如果你要产生0~10的10个整数,可以表达为:

int N = rand() % 11;

这样,N的值就是一个0~10的随机数,如果要产生1~10,则是这样:

总结来说,可以表示为:

a + rand() % n

其中的a是起始值,n是整数的范围。

https://www.cnblogs.com/grandyang/p/5783392.html

Knuth shuffle算法:

https://yjk94.wordpress.com/2017/03/17/%E6%B4%97%E7%89%8C%E7%9A%84%E6%AD%A3%E7%A1%AE%E5%A7%BF%E5%8A%BF-knuth-shuffle%E7%AE%97%E6%B3%95/

不能直接随机取数字,只能随机取之前的数字才能保证等概率。

注意:取余i+1才能取到为i的余数。遍历到i的时候,必须有交换i自己这一项,所以必须是i+1。

https://leetcode.com/problems/shuffle-an-array/discuss/85965/C++-Knuth-Shuffle-(Fisher-Yates-Shuffle)-Implementation-(352-ms)

class Solution {
public:
Solution(vector<int> nums){
for(auto num : nums)
v.push_back(num);
} /** Resets the array to its original configuration and return it. */
vector<int> reset() {
return v;
} /** Returns a random shuffling of the array. */
vector<int> shuffle() {
vector<int> res = v;
for (int i = ; i < res.size(); ++i) {
int t = rand() % (i + );
swap(res[i], res[t]);
}
return res;
} private:
vector<int> v;
};

最新文章

  1. 重邮二进制日天群-pwn1
  2. Cookie, LocalStorage 与 SessionStorage
  3. Tree菜单 复选框选中控制DEMO
  4. Mybatis + SpringMVC + Maven实现分页查询
  5. kail-linux my need
  6. dubbo通信协议之对比
  7. spring源码学习之【准备】jdk动态代理例子
  8. [Everyday Mathematics]20150221
  9. gprof
  10. 【Stage3D学习笔记续】山寨Starling(一):从事件说起
  11. Qt中文乱码问题(比较清楚,同一个二进制串被解释成不同的语言)
  12. 配置文件的读取添加webconfig
  13. PS学习
  14. C# 课堂总结2-数据类型及转换方式
  15. NFTS数据流
  16. ASP.NET MVC 执行流程介绍
  17. 《剑指offer》旋转数组中的最小数字
  18. 修改注册表.exe的文件目录
  19. android:View的setTag和getTag
  20. cpu高占用,线程堆栈,jstack,pstack,jmap, kill -3 pid,java(weblogic,tomcat)

热门文章

  1. 当安装、卸载件包时,出现依赖问题 error: Failed dependencies
  2. 利用webhook实现发送通知到Slack
  3. 乔布斯在位时,库克实质上已经在做CEO的工作了:3星|《蒂姆&#183;库克传》
  4. 使用CIFAR-10样本数据集测试卷积神经网络(ConvolutionalNeuralNetwork,CNN)
  5. 用 Python 加密文件
  6. pycharm注册使用
  7. shiro认证+盐加密
  8. QQ首页 案例
  9. $spfa-dfs$优化板子
  10. C/C++输入