zoukankan      html  css  js  c++  java
  • 第 1 章 第 4 题 生成固定范围随机数问题

    问题分析

      假若要产生0 - 9范围内的无重复随机数字,可按照如下思路实现:

      1. 定义存放10个整数元素的数组,其中每个元素的值为其下标值。

      2. 遍历数组,让当前遍历位的元素和某个位( 随机产生 )的元素交换。

    代码实现

     1 #include <iostream>
     2 #include <cstdlib>
     3 
     4 using namespace std;
     5 
     6 #define N 10
     7 
     8 /*
     9  * 交换数组元素
    10 */
    11 void change(int &a, int &b) {
    12     int temp;
    13     temp = a;
    14     a = b;
    15     b = a;
    16 }
    17 
    18 int main()
    19 {
    20     int a[N];
    21 
    22     /*
    23      * 给数组赋初值
    24     */
    25     for (int i=0; i<N; i++) {
    26         a[i] = i;
    27     }
    28 
    29     /*
    30      * 遍历数组并完成随机交换
    31     */
    32     srand( (unsigned)time( NULL ) );
    33     for (int i=0; i<N; i++) {
    34         change (a[i], a[rand()%N]);
    35     }
    36 
    37     /*
    38      * 打印产生的随机数结果
    39     */
    40     cout << "无重复随机数如下: " << endl;
    41     for (int i=0; i<N; i++) {
    42         cout << a[i] << " ";
    43     }
    44     cout << endl;
    45 
    46     return 0;
    47 }
    48     

    运行结果

    说明

      1. 本程序采用时间作为随机数种子,故每秒钟内最多执行一次,否则将会得到几组相同的随机数。

      2. 这其实也不是“真正”严格的随机数,世界上也找不到绝对的随机数,最接近的方法也要模拟核爆之类的。

  • 相关阅读:
    9- 遍历map集合的方法
    linux下修改了tomcat端口之后无法访问
    汪汪
    无题
    python之禅
    kettle连接oracle出现Error connecting to database: (using class oracle.jdbc.driver.OracleDriver)
    Android camera
    网站部署,网站要求需要支持mb_substring
    oracle笔记
    CSS jQuery 图片全屏切换
  • 原文地址:https://www.cnblogs.com/scut-fm/p/3242758.html
Copyright © 2011-2022 走看看