Print

随机生成不重复字母

问:Excel 如何生成两个字母随机不重复排序
  1. 答:可以用公式先将所有组合产生出来放在A列。
    然后在B列用公式随机抽取A列中的组合。
    A1公式:
    =CHAR(97+INT(MOD(ROW()-1,17576)/676))&CHAR(97+INT(MOD(ROW()-1,676)/26))&CHAR(97+MOD(ROW()-1,26))
    将公式向下复制到17576行。
    然后用复制、选择性粘贴、数值,将A列公式结果固定下来。
    B2公式:
    =INDEX(A:A,SMALL(IF(COUNTIF(B$1:B1,A$1:A$17576),65536,ROW($1:$17576)),1+INT(RAND()*(17577-ROW()))))
    公式以CTRL+SHIFT+ENTER三键结束。
    将公式向下复制。你要多少个就复制多少行。
    按F9可以随机改变选取的组合,保证没有重复。
  2. 答:嵌套2个for循环
    里面写一个判断i和j是否相等
    可以把字母转成ascii码,这样方便循环
问:Java中如何随机生成24个不重复的字母?
  1. 答:boolean 默认false while循环是 字符选中相同的时候 继续循环 直到不重复 退出循环
问:c语言随机生成20个不重复的字母,用到数组
  1. 答:#include <time.h>
    int main()
    {
        int i =0;
        int j  = 0;
        char letter[20];
        srand((unsigned)time(NULL));
        for(i = 0; i < 20; i++)
        {
            letter[i] = rand() % 27 + 97;
            j = 0;
            for(j = 0;j < 20;j++)
            {
                if(letter[i] == letter[j])
                {
                    i --;
                    //如果有相等的元素,重新生成这个位置上的元素
                }
            }
        }
        return 0;
    }
  2. 答:你这个查找相同元素的循环是错误的,第一个永远相等,是死循环,应排除第一个,其次可以优化循环,使j<i,而不用循环20次,因为后面的位置还没有被写入

本文来源: https://www.lw90.cn/article/d9bb52868fb9af7b1a174061.html