老師上統計課的時候講了實驗室對實驗小鼠進行隨機分組的方法。
方法有點麻煩,如下:
0. n為總數,m為組數,o為每個小組的最大數量,o=n/m
1. 對每個小鼠進行編號
2. 依次對每個小鼠取隨機數,並把這個隨機數除以組數求餘,餘數為初次分配的組數
3. 對多於數量o的小組,取隨機數求餘的方式隨機確定乙個成員,放到第乙個未滿的小組
4. 重複執行第3步,直到所有組都為o個小鼠,分組完成
#include
#include
#include
#define overflow -1
typedef
struct
group;
void initinput(int * totalamount,int * groupamount) //最開始的輸入環節
else
if(*groupamount<=0)
else
if(*totalamount%*groupamount!=0)
else
printf("\n");
}while(flag==1);
printf("樣本總數為%5d,組數為%5d,每組有%5d個樣本\n",*totalamount,*groupamount,*totalamount/(*groupamount));
}void printgroups(group * groups)
}printf("\n");
}void initworkgroups(group * * groups,int totalamount,int groupamount)
printf("initworkgroups complete\n");
}void destroyworkgroups(group **groups)
free(*groups);
*groups=null;
}void firstalloc(group * groups,int totalamount) //第一輪分配
}void nextalloc(group * groups,int groupsize) //第二輪分配
groups[i].count--;
for(j=1; j<=groupamount; j++)
}printf("組:%2d,隨機數:%5d,求餘:%2d,編號:%d-->group:%2d\n",i,rnd,rndmod,num,j);}}
}int main(int argc,char ** argv)
mysql 隨機分組 Mysql 分組選擇
mysql 分組選擇與group concat 在其他的資料庫中我們遇到分組選擇的問題時,比如在分組中計算前10名的平均分 我們可以使用row number over 比較方便的得到。但是在mysql中,問題就被拋了出來,因為mysql並沒有乙個rownum內建資料元組訪問方式。在這裡我提供三種方式...
瑣記6 隨機分組
將40個數按4個一組隨機分成10組列印出來 實現的方法應該有很多,這裡就介紹一種利用陣列元素的交換來實現的方法。可以利用乙個隨機函式獲取乙個40以內的隨機數作為下標,將它的值與末尾值交換,再獲取乙個39以內的隨機數,再將它的值與倒數第二個數交換,依次交換後就可以得到乙個隨機數組了。include i...
SQL分組獲取隨機記錄
主要是利用row number over 函式以及dbms random.value產生的隨機數大小排序進行,再對固定的排序序號進行統一取值,select id,empno row number over partition by empno order by dbms random.value a...