Redian新闻
>
请教各位大侠如何去除reimage repair病毒
avatar
请教各位大侠如何去除reimage repair病毒# PDA - 掌中宝
l*n
1
K distinct integers in [0, N], select a random number between 0 and N which
is not in the K list.
多谢
avatar
f*x
2
前几天下载KMPLAYER的副产品,太TMD烦人。
avatar
g*j
3
怎么做?

which

【在 l**********n 的大作中提到】
: K distinct integers in [0, N], select a random number between 0 and N which
: is not in the K list.
: 多谢

avatar
f*x
4
up
avatar
z*8
5
I think this requires pre-processing to map all K integers to last K
integers in the array which takes O(K) time.
After that, you can simply do Rand%(N-K) to get the number which is not in
the K in constant time
avatar
l*n
6
具体怎么做?
假如不能用额外的data structure, 还有其他更好的办法么?

【在 z*********8 的大作中提到】
: I think this requires pre-processing to map all K integers to last K
: integers in the array which takes O(K) time.
: After that, you can simply do Rand%(N-K) to get the number which is not in
: the K in constant time

avatar
k*4
7
如果可以改变数组的话。first positive integer 抽样可行不。

K distinct integers in [0, N], select a random number between 0 and N which
is not in th........

【在 l**********n 的大作中提到】
: K distinct integers in [0, N], select a random number between 0 and N which
: is not in the K list.
: 多谢

avatar
j*6
8
没看懂 为什么要 map all K integers to last K integers in the array.
为什么最后只需要Rand%(N-K)? 如何N = 10, K array 是 0-7, K= 8, 那么你最终只
能随机出0 1 2 三个随机数,永远都是在array 的范围内?
不太明白 求解答 多谢啦

【在 z*********8 的大作中提到】
: I think this requires pre-processing to map all K integers to last K
: integers in the array which takes O(K) time.
: After that, you can simply do Rand%(N-K) to get the number which is not in
: the K in constant time

avatar
z*8
9
不用额外的ds, 那是要rejection sampling吗?

【在 l**********n 的大作中提到】
: 具体怎么做?
: 假如不能用额外的data structure, 还有其他更好的办法么?

avatar
k*4
10
1)随机算法,将k个数排序,平均时间klogk,随机选一个数,binary search排序的数
组,如果在其中,继续,否则返回这个数。平均复杂度(k+n/(n-k))logk.
2)将k个数排序,klogk。然后用reservoir sampling。时间是(n+k)logk。

【在 l**********n 的大作中提到】
: 具体怎么做?
: 假如不能用额外的data structure, 还有其他更好的办法么?

avatar
k*4
11
第二种方法稍稍改一下可以将时间变成klogk,对于排好序的元素A[i], A[i+1](A[i]+1
< A[i+1]),如果A[i] + (1+rand()%(S+A[i+1]-A[i]-1)在区间【A[i]+1, A[i+1]-1】,
替换当前的sample,否则保留,同时S += A[i+1]-A[i]-1

【在 k******4 的大作中提到】
: 1)随机算法,将k个数排序,平均时间klogk,随机选一个数,binary search排序的数
: 组,如果在其中,继续,否则返回这个数。平均复杂度(k+n/(n-k))logk.
: 2)将k个数排序,klogk。然后用reservoir sampling。时间是(n+k)logk。

avatar
f*2
12
这K个intergers应该是已知的吧?那这样可不可以?
int generate(int *kList, int K, int N)
{
int num;
gen:
num = rand()*N;
for (int i = 0; i < K, i++)
{
if num == kList[i];
goto gen;
}
return num;
}

which

【在 l**********n 的大作中提到】
: K distinct integers in [0, N], select a random number between 0 and N which
: is not in the K list.
: 多谢

avatar
k*4
13
这就是随机算法了,稍稍改进,可以二分查找num是否在kList中。

【在 f*****2 的大作中提到】
: 这K个intergers应该是已知的吧?那这样可不可以?
: int generate(int *kList, int K, int N)
: {
: int num;
: gen:
: num = rand()*N;
: for (int i = 0; i < K, i++)
: {
: if num == kList[i];
: goto gen;

avatar
f*2
14
binary search是比遍历要快,但是binary search前得先排序,这个排序消耗的时间能
不能抵消binary search节省的时间?感觉这个复杂度不好分析啊

【在 k******4 的大作中提到】
: 这就是随机算法了,稍稍改进,可以二分查找num是否在kList中。
avatar
u*o
15
这个题和reservior sampling 是什么关系呢?
假如 N =100, K=10
reservior sampling是说,a[0]-a[9]就是前10个数,从a[10]开始,generate a
random number j in N, if j < k, 替换, 否则skip到下一个数。
这个题的意思是不是说, a[0]- a[9] 还是1-k这些数,从a[10]开始,generate a
random number j in N, if j > k, return the number, else skip to next number.
和reservior sampling条件相反,但意思是一样的?
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。