用C语言实现从1~22中随机抽取8个数的程序

用C语言实现从1~22中随机抽取8个数的程序,第1张

#include <stdioh>

#include <stdlibh>

#include <timeh>

int main()

{

    int m[22]={0};

    int i;

    

    srand(time(NULL));

    for(i = 0; i < 8; )

    {

        int t = rand()%22;

        if(m[t]==0)

        {

            m[t] = 1;

            i++;

        }

    }

    for(i = 0; i < 22; i ++)

        if(m[i]) printf("%d ", i);

    printf("\n");

    return 0;

}

用VB做一个产生随机数程序过程:

1 创建随机数窗体:

2 编写产生随机数的事件:

Private Sub Command1_Click()

Randomize '初始化随机数生成器

List1AddItem Int((Rnd 9) + 1)

End Sub

3 运行结果:

clc,clear;

%一个三维随机运动的小球

r=05;%球的半径

%运动的范围

x1=0;x2=30;

y1=0;y2=30;

z1=0;z2=30;

%初始位置  随机生成

x0=rand(1)(x2-x1-2r)+x1;

y0=rand(1)(y2-y1-2r)+y1;

z0=rand(1)(z2-z1-2r)+z1;

pos=[x0;y0;z0];

figure(1)

[x,y,z]  = ellipsoid(pos(1),pos(2),pos(3),r,r,r);

surf(x,y,z,ones(size(x))) %画出来球

n=200;%随机运动的次数

p=1;  %p可以用来控制每次运动距离的大小

for i=1:n

    %产生运动的方向与运动距离,用一个随机向量表示

    s=0;

    while(s==0)

        direct=rand(3,1)-05;

        dd=direct/norm(direct,2);

        dd=ddp;

        post=pos+dd;

        if (post(1)>=x1+r&&post(1)<=x2-r)&&(post(2)>=y1+r&&post(2)<=y2-r)&&(post(3)>=z1+r&&post(3)<=z2-r)

            s=1;

        end

    end

    pos=pos+dd;

    [x,y,z]  = ellipsoid(pos(1),pos(2),pos(3),r,r,r);

    surf(x,y,z,ones(size(x))) %画出来球

    axis([x1 x2 y1 y2 z1 z2])

    pause(01);  %设置暂停时间

end

因为是随机运动   如果每次运动的距离设置的不大,小球基本上是在初始位置的范围内运动

方法很多,因为编程语言不同,只写下程序思路

1:CPU有些寄存器位是保留的,不保证每次数据,也就是数据可能是随机的。

2:检测外部接入信号的时间长度。

3:设置一个RAM在多段程序中调用,即有意的造成RAM不受控制。

如果有按键来启动这个随机数生成程序,那就再简单不过了

按键程序中都有消抖程序,要做的就是来检测每个干扰点的时间或者2个干扰点之间的特定RAM就是了。

以上就是关于用C语言实现从1~22中随机抽取8个数的程序全部的内容,包括:用C语言实现从1~22中随机抽取8个数的程序、用VB做一个产生随机数的程序、Matlab编写程序实现一个随机运动的小球等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9828772.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存