随机数生成

想要生成一个自定义范围内的随机整数,语言之间的差异还真不是一般的大。python用惯了,直接random.randint(a,b),感觉挺方便的。今天想用其它的语言来实现同样的功能,却花了我好长时间。
首先想到了c++,就去cppreference上找randint,找到了!上面说randint定义在头文件<experimental/random>里,可无论是vc++还是g++都找不到这个头文件,我能怎么办?想着java肯定有randint,就想换用java实现,可还是得到了一个error!(现在才知道python是多么的好用。)
终于让我在msdn上找到了一种写法。

#include <iostream>
#include <random>
using namespace std;

void random_in_place(int A[], int n){
//将数组A随机排列
    random_device rd;
    mt19937 gen(rd());
    for (int i = 0; i < n; ++i) {
        uniform_int_distribution<> dist(i, n-1);
        swap(A[i], A[dist(gen)]);
    }
}
int main()
{
    int A[8] = { 1,2,3,4,5,6,7,8 };
    random_in_place(A, 8);
    for (int i = 0; i < 8; ++i) {
        cout << A[i] << ' ';
    }
    cout << endl;
}

还有一种方法也能生成自定义范围内的随机数

int NUM = 8;  //自定义的一个范围,求余的话就是[0,8)。
srand(static_cast<unsigned>(time(0)));
int choise = (rand() % NUM); //适应于random_in_place,就是rand()%(n-i)+i

然后又用java实现了一下。

import java.util.Random;

class Random_in_place {

    public static void random_in_place(int A[],int n)
    {
        Random rand = new Random();
        for(int i = 0; i<n;++i)
        {
            int temp = A[i];
            int j = rand.nextInt(n-i)+i;   //java的nextInt(n)生成[0,n)
            A[i] = A[j];
            A[j] = temp;
        }
    }

    public static void main(String[] args) {
        int [] A = new int[8];
        for(int i = 0;i < A.length; ++i)
        {
            A[i] = i+1;
        }
        random_in_place(A,8);
        for(int i = 0; i < A.length; ++i)
        {
            System.out.print(A[i]);
            System.out.print(" ");
        }
        System.out.println();
    }
}

都记到这里,以防哪天还要用到。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Python中的random模块用于生成随机数。下面介绍一下random模块中最常用的几个函数。 random.r...
    老王叔叔阅读 4,710评论 0 0
  • 谈到随机性,这大概是一个令人困惑哲学问题吧。随机行为精确地说究竟指的是什么,最好是有定量的定义。Kolmogoro...
    IBegins阅读 3,077评论 0 0
  • 最近一直使用随机数,为了以后方便查阅,总结一下:在C中提供了rand()、srand()、random()、arc...
    iOS_成才录阅读 91,849评论 8 43
  • 去过健身房的人一定在宣传墙面上看到"减少脂肪,增加肌肉"这句话。很多女生不仅对脂肪多有拒绝心理,而且对长肌肉也...
    梭拉卓阅读 366评论 0 1
  • 设立目标,减肥的愿望才能实现。凡是预则立,不预则废! 减肥需要摄入多少热量? 卡路里就是计算食物能量值和人体所需能...
    一颗梧桐树阅读 7,705评论 5 20