我是不会改名的 发表于 2021-3-19 17:45

问个大佬们很简单的问题,生成一个五位数

五位数,不包含4。

随机输出一个数,并统计所有可能的结果(个数),这样的数有?种


用c语言,或者py,不能用过滤,不用正则。

17610172975 发表于 2021-3-19 17:53

这不应该在悬赏区,你发错地方了吧!

一只帅祖宗 发表于 2021-3-19 18:08

int strcmp(char *a, char *b);

对a和b的每个字符,按照ascii码值比较,如果二者完全相同返回0;如果a的ascii码值先出现较大者,会返回1;否则返回-1。

random 5个随机数,然后用上面的函数一个一个的查,

符合的放在变量里,不符合的放另一个,

循环函数用for,无限循环    for ( ; x != leth ; )

lyl610abc 发表于 2021-3-19 18:09

本帖最后由 lyl610abc 于 2021-3-19 18:42 编辑

说一下思路:
int arr={0,1,2,3,5,6,7,8,9};
从arr中任取五个数(去掉开头为0的)
算了补上C的代码(其实就是组合数稍微改改)

int out2;
void combine2(int arr[],int n,int m){
                int i,j;
      
      if(cnt==m){
                if(out2!=0){
                for(j=0;j<m;j++){
                        printf("%d ",out2);
                }
                printf("\n");
                }
      
                return;
      }

      for(i=0;i<n;i++){
                if(vis==0){
                        vis=1;
                        out2=arr;
                        cnt++;
                        combine2(arr,n,m);
                        vis=0;
                        cnt--;
                }
      
      
               
      }
}
int main(int argc, char* argv[])
{
      int arr={0,1,2,3,5,6,7,8,9};
      combine2(arr,9,5);
      return 0;
}

qianshang666 发表于 2021-3-19 18:28

lyl610abc 发表于 2021-3-19 18:09
说一下思路:
int arr={0,1,2,3,4,6,7,8,9};
从arr中任取五个数(组合数的算法)


这思路爱了爱了

ligxi 发表于 2021-3-19 18:30

本帖最后由 ligxi 于 2021-3-19 18:31 编辑

import itertools
import random

# 不含4
number_list = ['0', '1', '2', '3', '5', '6', '7', '8', '9']

five_digit_number_list = []
for i in itertools.product(number_list, repeat=5):
    data = str(int(''.join(i)))
    if len(data) == 5:
      five_digit_number_list.append(data)

# 随机取一个值
print(random.choice(five_digit_number_list))
# 总个数
print(len(five_digit_number_list))

nstar1221 发表于 2021-3-19 18:36

lua:
local enum={0,1,2,3,5,6,7,8,9}
local i = math.random(1,#enum)
local total = 0
for i=2,#enum do
        for j=1,#enum do
                for k=1,#enum do
                        for l=1,#enum do
                                for m=1,#enum do
                                        print(enum..enum..enum..enum..enum)
                                        total = total + 1
                                end
                        end
                end
        end
end

print('total:'..total)

lyl610abc 发表于 2021-3-19 18:43

qianshang666 发表于 2021-3-19 18:28
这思路爱了爱了

我怀疑我老年痴呆了
要求不包含4,我把5去掉了{:301_973:}

fanvalen 发表于 2021-3-19 19:33

5^9个
生成的过程中也有可能重复

小能维尼 发表于 2021-3-19 19:47

额,是这样的?
9*10*10*10*10   =90000 个五位数
不能有4,8*9*9*9*9 = 52488 个

代码大概意思就是:
****
每一位都随机,但不包括4。
第一位不包括0.
页: [1] 2
查看完整版本: 问个大佬们很简单的问题,生成一个五位数