由买买提看人间百态

topics

全部话题 - 话题: getrand
(共0页)
g*********e
发帖数: 14401
1
来自主题: JobHunting版 - 请问一道概率题,谢谢了先
#include
#include
#include
using namespace std;
double getRand() {
double ran=rand()/(double)RAND_MAX;
return ran;
}
int main() {
double E=0;
double sum=0;
double A=getRand();
sum=A;
double B;
int count=1;
double total;
int times=100000;
for(int i=0;i count=1;
A=getRand();
sum=A;
while(B=getRand()){
sum+=B;
count++;
if(B>=A)
break;
else {
A=B;
}
}
E=sum/count;
... 阅读全帖
y**i
发帖数: 1112
2
来自主题: JobHunting版 - 关于高德纳的洗牌算法
为什么要这么取随机数,要包括自己的下标
我觉得rand = GetRand(0, i-1)就已经很好了啊
j**l
发帖数: 2911
3
来自主题: JobHunting版 - 关于高德纳的洗牌算法
以从前向后排为例,之所以是GetRand(i, n-1), 要包括i
因为第i号牌最终就放在i号位置不动是n!种全排列包括的
第0号位置可以放n张牌之一
第1号位置可以放(n-1)张牌之一,因为第0号位置固定了一张牌
第2号位置可以放(n-2)张牌之一, 因为第0号位置和第1号位置固定了两张牌
...
第n-1号位置只能放最后剩下的一张牌
所以有n!种放法,不重不漏
s******e
发帖数: 108
4
来自主题: JobHunting版 - 攒人品,twitter二面面经
public class RandomHash {
HashMap hashmap = new HashMap();
Vector vec = new Vector();
public void insert(K key) {
vec.add(key);
hashmap.put(key, new Integer(vec.size()-1));
}
public K getRand() {
if(vec.size()<=0)
return null;
Random randomGenerator = new Random();
int rndnum = randomGenerator.nextInt(vec.size());
return vec.get(rndnum);
}
public boole... 阅读全帖
s******e
发帖数: 108
5
来自主题: JobHunting版 - 攒人品,twitter二面面经
可以用 hashset 来替代 vector ,
public class RandomHash {
HashMap > hashmap = new HashMap LinkedHashSet>();
Vector vec = new Vector();
public void insert(K key) {
vec.add(key);
if( ! hashmap.containsKey(key) ) {
LinkedHashSet hashSet = new
LinkedHashSet();
hashSet.add(new Integer(vec.size()-1));
hashmap.put(key,hashSet);
} else {
h... 阅读全帖
(共0页)