c语言逻辑问题,我想从1-10中随机产生10个数,且各不相同。请问我的算法有什么问题?

作者&投稿:胥堂 (若有异议请与网页底部的电邮联系)
生成长度为10,元素为1-10中随机,每个元素不相同算法 我自己写了一点,求指导!~

#include
#include
int main()
{
int a[11]={0}; //a数组是0-10这11个数字产生的次数
int b[10]={0}; //存放产生的随机数
int k=0,n,i;
srand(5);
while(k<=10)
{ n=rand()%10+1;
if(a[n]==0){b[k]=n ;a[n]=1;k++;} //如果这个数字的个数=0表示还没有出现过
}
for(int j=0;j<10;j++)
cout<<b[j]<<" ";
system("PAUSE");
}

编译环境为:vs2013产生1到3的整型随机数的代码如下:#include#include#include#define max 3 //这个函数的意义为:随机生成最大的数为3#define min 1 //这个函数的意义为:随机生成最小的数为1int main(){int num;srand(time(0));num = rand() % (max - min) + min; // 这里的意义,“%”为模运算printf("随机数为:%d
", num);system("pause"); //这个代码可以让弹出的黑框不会一下就消失return 0;}

扩展资料:
根据密码学原理,随机数的随机性检验可以分为三个标准:
条件一、统计学伪随机性。统计学伪随机性指的是在给定的随机比特流样本中,1的数量大致等于0的数量,同理,“10”“01”“00”“11”四者数量大致相等。类似的标准被称为统计学随机性。满足这类要求的数字在人类“一眼看上去”是随机的。
条件二、密码学安全伪随机性。其定义为,给定随机样本的一部分和随机算法,不能有效的演算出随机样本的剩余部分。
条件三、真随机性。其定义为随机样本不可重现。实际上只要给定边界条件,真随机数并不存在,可是如果产生一个真随机数样本的边界条件十分复杂且难以捕捉(比如计算机当地的本底辐射波动值),可以认为用这个方法演算出来了真随机数。
随机数分为三类:
①伪随机数:满足第一个条件的随机数。
②密码学安全的伪随机数:同时满足前两个条件的随机数。可以通过密码学安全伪随机数生成器
计算得出。
③真随机数:同时满足三个条件的随机数。

问题吗。。。你和现在的这个数不同,不代表和前面的数也不同。。。。
方法吗。。。
c++语言有很方便的random_shuffle()库函数,就是把一个数组随机打乱顺序,很好用
c语言的话,可以用qsort()代替
qsort是一个排序函数,接受4个参数,从左往右是数组名字,待排序元素个数,单个元素大小,比较方法(其实是一个函数指针,接受两个const void * 指针,返回int,0表示两个元素相等,负数表示第一个元素小于第二个,整数表示第一个元素大于第二个)
比如 对int a[10] = {1,3,4,5,6,8,9,10,11,12};从小到大排序
我们先定义比较函数
int lower_cmp(const void * a,const void * b)
{
return *((int*)a) - *((int*)b);

}
然后调用qsort(a,10,sizeof(int),lower_cmp);完成排序

现在我们来回答LZ的问题,假设有
int a[10] = {1,2,3,4,5,6,7,8,9,10};
LZ的意思即把这个数组打乱顺序,利用qsort函数,我们只需要告诉它乱排序即可,于是定义
int random_cmp(const void * a,const void * b)
{
return rand()%11 - 5; //这儿随便搞,只要随机出现正负数即可

}
调用 qsort(a,10,sizeof(int),random_cmp);即可

说明:qsort()和rand()函数定义于stdlib.h
实例程序:

#include <stdlib.h>
#include <time.h>
#include <stdio.h>

#define N 10

int rand_cmp(const void * a,const void * b)
{return rand() % 11 - 5;}

int a[100];

int main()
{
srand(time(NULL));
for(int i = 0;i < N;i ++) a[i] = i + 1;
qsort(a,10,sizeof(int),rand_cmp);
for(int i = 0;i < N;i ++) printf("%d ",a[i]);
return 0;
}


我这人语言逻辑和思考逻辑很差,想改掉这个毛病,真心请教大神我应该怎么...
要多表达,不要感觉自己不行,慢慢的就越来越好,越来越自信了!只要稍加注意就可以了。推荐《演讲与口才》,然后,每天可以,读一些文章,朗诵。多和人交流,心态放宽,大家都是平等的,慢慢就好了。加油!

怎么提高语言的逻辑性?
3.语言的逻辑性,来自于缜密的思考。这就需要把握问题的前因后果、重点主次,对问题有独到的见解,观点鲜明,中心突出,层次清楚,并摆事实,讲道理,论后果,使人心悦诚服。4.克服紧张、焦虑、恐惧情绪,保持一个良好的心境。谈话时态度沉着,仪表从容,不慌不忙,镇定自若地阐述自己的看法,就会使语...

孩子语言逻辑混乱,也算语言发育迟缓吗?需不需要语言矫正?
所以,不要把口才和语言矫正归为一处。它们是两个完全不同的领域。前者完全是功利性的,后者属于语言病理学的范畴。语言逻辑问题说明孩子的词汇量还没有达到他们这个年龄应有的水平。也可以说,很多语言发育迟缓的症状其实是互相交叉的。与构音障碍不同的是,每个孩子都不能把音节发清楚,大多数孩子会同时...

孩子各项能力都不错,但说话太“飘”,怎么让孩子抓住语言逻辑?
多与孩子交谈:无论是在吃饭、散步还是做家务时,都可以与孩子聊天,描述所见所闻,提问问题。给孩子读书:阅读不仅可以丰富孩子的词汇量,还可以锻炼他们的语言组织能力。玩语言游戏:如猜谜语、绕口令、编故事等,能让孩子在轻松愉快的氛围中学习语言。锻炼孩子的语言表达 语言表达能力是建立语言逻辑的基础...

逻辑混乱,言语表达不清楚,是怎么回事,该怎么办
问句应答和句式运用等能力。3、是一些进阶训练,让孩子表达词汇,再过渡到肯定、否定以及动词表达、排序表达、看图说故事、社交表达等。逻辑障碍对孩子的发声、语言表达能力有很大的影响。坚持以上的方法进行训练能够很好地改善和解决孩子的语言逻辑障碍的问题。孩子的问题是一个大问题是不容忽视的哟!

语言的逻辑分析:语言学家关注的逻辑问题目录
《语言的逻辑分析:语言学家关注的逻辑问题目录》详尽探讨了语言逻辑的多个关键领域,从基础概念到复杂理论。以下是目录的概览:第二版序言和第一版序言介绍了研究的背景和目标,强调逻辑在语言学中的核心作用。逻辑的对象部分深入探讨了逻辑与逻辑式的关系,以及命题的性质,包括歧义和分工对逻辑理解的影响...

语言陷阱问题 “逻辑”
也就是不知道自己懒惰。A我以为你知道了,也就是说A以为B知道自己懒惰了。B你怎么知道我知道了?就是反问,意思就是B不知道A说的是什么?A你不知道我怎么知道你知道了?A的意思是说你不知道你懒惰,你知道了什么?B回答不知道,也就是真的不知道自己知道了什么?好像没什么问题啊 ...

有什么方式可以锻炼语言的逻辑性?
你想锻炼自己语言的逻辑性的话,你可以多去看一些脱口秀类的节目。这一类节目上他们可能说的话是比较多的,而且每一句话的连贯性也是比较强。其实,你也可以在日常生活中如果有事没事的话多去看一些书,因为是在书上,他们每一个故事的连接性都是有逻辑型。因为我以前在写作文的时候也不知道自己怎样...

想让孩子抓住语言逻辑,家长就应该如何引导呢?
详情请查看视频回答

逻辑语言学问题
第三,通常情况下,任何一种签名(无论是传统意义上的,还是网络时代意义上的),都不是口头的语言交际,它不构成任何一句话。就算把书面语言看成与口头语言一样,它也常常不是以句子的形式出现的。也就是说,你的签名可能只是一个词、一个词组、一个表情符号、一幅画,这些时候它就不是“一句”话...

峨眉山市15554873673: c语言逻辑问题,我想从1 - 10中随机产生10个数,且各不相同.请问我的算法有什么问题? -
贝弯万汀: 问题吗...你和现在的这个数不同,不代表和前面的数也不同....方法吗...c++语言有很方便的random_shuffle()库函数,就是把一个数组随机打乱顺序,很好用 c语言的话,可以用qsort()代替 qsort是一个排序函数,接受4个参数...

峨眉山市15554873673: 好!我想问下 就是C语言随机数的问题 -
贝弯万汀: //你就是想产生一个不重复的随机的1-10的序列吧 #include<stdio.h> #include<stdlib.h>//标准工具库,要用到其中的rand() #include<time.h>//时间库,要用到里面的时间来做随机数的种子int main(void) { srand(time(NULL));//srand是设计随机数的...

峨眉山市15554873673: c语言 随机选数 求助 -
贝弯万汀: #include <stdlib.h>#include <stdio.h>#include <time.h> /*用到了time函数,所以要有这个头文件*/ int main( void) { int i,s_a,s_b; srand((unsigned) time(NULL)); /*播种子*/ s_a= rand() % 100; /*产生100以内的随机整数*/ s_b= rand() % 100; /*产生100以内的随机整数*/ printf("产生的两个随机数为:%d和%d ", s_a,s_b); printf("\n"); return 0; }

峨眉山市15554873673: C语言如果希望下标从1到10而不是0到9该怎么办? -
贝弯万汀: 定义一个方法 参数为index return array[index -1]; 就可以传1-10了

峨眉山市15554873673: 两个函数 ,一个函数需从1~1000中随机抽取10个数并输出 c语言问题 -
贝弯万汀: #include#include#include void f1(int *a,int n) { int i; srand((unsigned int)time(NULL)); for ( i=0;i} void f2(int *a,int n) { int i,j,k; for ( i=9;i>0;i-- ) for ( j=0;ja[j+1] ) { k=a[j];a[j]=a[j+1];a[j+1]=k; } for ( i=0;i } void main() { int a[10]; f1(a,10); f2(a,10); }

峨眉山市15554873673: c语言一个简单随机数问题 -
贝弯万汀: C语言的随机数不是这么取出来的 你要实现从1 2 3三个数字中随机抽取一个数, 其实就是要实现生成一个取值在1~3的随机数 实现如下: 随机输出十个1-2之间的整数 #include <stdlib.h> #include <stdio.h> #include <time.h> void main( void ) int i,...

峨眉山市15554873673: c语言编程:要求运行程序后意输入的可将从命令窗口随10个整数进行从大到小的排序并显示在命令窗口 -
贝弯万汀: 你的问题好像是对随意输入的10个数进行降序排序,如果这样的话,我下面写了一个c程序,调试通过.#include "stdio.h" void main() {int i,j,t,a[10]; printf("请随意输入10个整数:"); for(i=0;i scanf("%2d",&a[i]); printf("\n"); printf("按从大到小排序后:"); for(i=0;i { for(j=i;j if(a[i]>a[j]) {t=a[i]; a[i]=a[j]; a[j]=t; } } for(i=0;i printf("%2d",a[i]); }

峨眉山市15554873673: 如何产生1000个从1到1000之间的不重复的随机数,用C语言实现! -
贝弯万汀: //以下程序是产生0到9之间10个不重复的随机数.你参考一下,这个是我搜索的,你有什么问题搜索一下吧,或者到CSDN论坛上提问.#include <stdlib.h> //标准工具库,要用到其中的rand() #include <stdio.h> #include<conio.h> #include <time.h...

峨眉山市15554873673: 帮忙写一个C 语言从1 + 到10 的小程序. -
贝弯万汀: #include<stdio.h> void main() {int i,N,a=0;printf("请输入N=");scanf("%d",&N);for(i=1;i<=N;i++)a+=i;printf("在从1到10里前%d个数字的总和为:%d",N,a); }

峨眉山市15554873673: C语言随机 -
贝弯万汀: int not_in(int temp) { for(int i=0; i < 10;i++ ) printf( " %6d\ if(not_in(temp)) { a[j]=temp; } j++.h> #include <time.h"#include &lt.h> #include <stdlib;stdio; if(j>9) break; } for(int i = 0;i<j;i++) { if(a[i]==temp) return 0; } return 1; } int _tmain(int argc, _TCHAR...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网