由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 问一个随机排列的问题.
相关主题
[合集] C++ STL questionrandom number generator in C++
[合集] 面试问题[合集] C++如何产生很大范围的随机数?
请教一个排列组合的编程问题方块里面的随机位置
请教个C++程序设计STL堆操作怎样对堆顶元素做ShiftDown?
如何最简单的获得一个随机字符串(PHP)? (转载)Re: 这里有人做p2p的么?
tree data conversion一个简单的算法问题?
c++里如何产生一个standard normal sample正看一本叫code complete的书,有一句话关于c不明白
请教一个c++概率小程序C++里面
相关话题的讨论汇总
话题: tmp话题: int话题: rand话题: 排列话题: shuffle
进入Programming版参与讨论
1 (共1页)
b******a
发帖数: 215
1
如何将 1,2,3,4,......100这个数列生成一个随机排列的数列?
就是像 89,2,5,90,56,........3,4..
谢谢.
y****i
发帖数: 156
2
JingHuaQu should have. Check it
c code.
void shuffle(int A[], int n)
{
int i, j, tmp;
for(i = n - 1; i >=1; i--) {
j = rand() % i;
/* swap */
tmp = A[i];
A[i] = A[j];
A[j] = tmp;
}
}

【在 b******a 的大作中提到】
: 如何将 1,2,3,4,......100这个数列生成一个随机排列的数列?
: 就是像 89,2,5,90,56,........3,4..
: 谢谢.

b******a
发帖数: 215
3
thanks. got it.

【在 y****i 的大作中提到】
: JingHuaQu should have. Check it
: c code.
: void shuffle(int A[], int n)
: {
: int i, j, tmp;
: for(i = n - 1; i >=1; i--) {
: j = rand() % i;
: /* swap */
: tmp = A[i];
: A[i] = A[j];

b******a
发帖数: 215
4
thanks.
N***m
发帖数: 4460
5
STL has shuffle?

【在 b******a 的大作中提到】
: 如何将 1,2,3,4,......100这个数列生成一个随机排列的数列?
: 就是像 89,2,5,90,56,........3,4..
: 谢谢.

z****e
发帖数: 2024
6
严格来讲,你这个是biased,因为rand()不是到无穷都均匀的。
要处理一下尾巴,尤其n很大的时候。

【在 y****i 的大作中提到】
: JingHuaQu should have. Check it
: c code.
: void shuffle(int A[], int n)
: {
: int i, j, tmp;
: for(i = n - 1; i >=1; i--) {
: j = rand() % i;
: /* swap */
: tmp = A[i];
: A[i] = A[j];

N***m
发帖数: 4460
7
rand()总是返回一个有限的数,
如果n=100000000*RAND_INT_MAX+some number,那就算不上尾巴了。
这时候怎么处理好呢?

【在 z****e 的大作中提到】
: 严格来讲,你这个是biased,因为rand()不是到无穷都均匀的。
: 要处理一下尾巴,尤其n很大的时候。

r****t
发帖数: 10904
8
resampling, 这里 performance 不是问题。

【在 N***m 的大作中提到】
: rand()总是返回一个有限的数,
: 如果n=100000000*RAND_INT_MAX+some number,那就算不上尾巴了。
: 这时候怎么处理好呢?

N***m
发帖数: 4460
9
wiki上有好长的介绍,先记下:)

【在 r****t 的大作中提到】
: resampling, 这里 performance 不是问题。
r****t
发帖数: 10904
10
我连名词都搞错了:resampling 指 bootstrap 之类的,
这里的算是 acceptance sampling 吧,错了纠正我。
就是说,要是 rand() 返回的数在尾巴上, 就重新 rand() ,直到合格为止。

【在 N***m 的大作中提到】
: wiki上有好长的介绍,先记下:)
1 (共1页)
进入Programming版参与讨论
相关主题
C++里面如何最简单的获得一个随机字符串(PHP)? (转载)
一个c++问题 (转载)tree data conversion
请教一个C++的编程c++里如何产生一个standard normal sample
怎样在cygwin里安装老的gcc版本?请教一个c++概率小程序
[合集] C++ STL questionrandom number generator in C++
[合集] 面试问题[合集] C++如何产生很大范围的随机数?
请教一个排列组合的编程问题方块里面的随机位置
请教个C++程序设计STL堆操作怎样对堆顶元素做ShiftDown?
相关话题的讨论汇总
话题: tmp话题: int话题: rand话题: 排列话题: shuffle