这个“尽量”说的太模糊了,到底是允许还是不允许?
呵呵,和楼上意思一样,你这个尽量逻辑可不好写。
建一个HashTable,把每次生成过的项都存进去,每次生成的时候判断一下,因为是键值对,效率没有问题,如果存在再随机出来一个。
楼上的办法,如果这个 hushtable 中的数总数接近 n 时,随机数命中的概率会很低,效率会有问题。
楼主的题目出的不严谨,a,b,c,d,e,f,g 是什么样的数?正整数,自然数还是整数?a,b,c,d,e,f,g 数的选择是否要随机,还是随便?如果随便,那很简单 n = 100 时 取 1,2,3,4,5,6,7 n = 101 时取 8,9,10,11,12,13,14 弄个指针循环取就完了,如果要随机的也不难,设n的最大值为m ,将m的值打乱,存到数组或hashtable中,然后还是按上面方法取,比如 array[1] = 10, array[2] = 15, array[3] = 20 以此类推,n = 100 时取下标为 1-7的 数组值,n=101 时取 下标为 8-14 的数组值,这样循环下去,当取出来的数大于等于n 时往后跳一个继续取。