元素个数不多,于是我直接用32位整数来表示元素的集合
把表示集合的整数a表示为二进制
01000100110010101
于是a表示的集合为{1,5,8,9,12,14,16}
然后需要从集合中随机取出一个元素
目前想到两两方法
其一
不断的从[0,31]这个区间内随机取一个数i,直到a的第i位是1
实现代码
int i;
do{
i=rand()%32;
}while(a^(1<<i));
其二
把a的每一位都扫一遍,把存在的元素保存到数组x中
然后从x中随机取一个
不过都不太满意啊,求更好的方法
虽然第二种方法已经满足实际需求了,不过还是想知道是否有更好的方法