1. 程式人生 > >java生成任意隨機值,字元,數字,其它的都有你來

java生成任意隨機值,字元,數字,其它的都有你來

主角:Math.random()

Math.random()是令系統隨機選取大於等於 0.0 且小於 1.0 的偽隨機 double 值,是Java、js等語言常用程式碼。

我要說的是用java語言,實現任意隨機資料

首先我們知道Math.random()是生成0.0 到 1.0之間的資料,記住包前不包後哦,意思就是包括0.0,不包括1.0 ,這是java基礎中,很多地方都是包前不包後,就不一一說明了,但是為了好理解。我們可以那麼理解
Math.random() == Math.random()*(1.0-0.0) + 0.0

如生成 2.0– 6.0之間的資料就是
Math.random()*(6.0-2.0) + 2.0;

可以知道公式為: 生成 n 到 m 之間的隨機資料為:
Math.random()*(m-n) + n;

看程式碼:

public class Random {

    public static void main(String[] args) {

        // 2.0  到 4.0  之間的隨機數
        double num = Math.random() * (4.0-2.0) + 2.0;
        System.out.println(num);
    }

}

我們把它封裝一下:

public class Random {

    public
static void main(String[] args) { // 2.0 到 4.0 之間的隨機數 double num = Math.random() * (4.0 - 2.0) + 2.0; System.out.println(getRandom(2.0, 4.0)); } //生成n到m 之間的資料 public static double getRandom(double n, double m) { return Math.random() * (m - n) + n; } }

有人問了,不是說任意的嘛,說好的字元,大小寫字母….,其實特別簡單,java是可以型別強轉的!所以說知道剛剛的原理,就可以直接生成大小寫字母隨機的,但是我們要知道 ASCALL碼,簡單的如a(97) A(65)
0(48)等等

上程式碼

public class Random {

    public static void main(String[] args) {

        //生成 3 -- 10 之間的整數
        System.out.println(getRandom(3, 10));
    }


    //生成n到m  之間的
    public static int getRandom(int n, int m) {
        return (int)(Math.random() * (m - n) + n);
    }
}

想生成 指定 整數之間, 指定小數之間,都可以,直接修改強轉就可以了

    public static float getRandomIn(int a, int b) {
        return (float)(Math.random()* (b - a) + a);
                //這個強轉, 你看著來
    }

那生成指定字元呢

public class RandomChar {



    public static void main(String[] args) {
        System.out.println(getRandomIn('a', 'd'));
    }
    public static char getRandomIn(char a, char b) {
        return (char) (Math.random() * (b - a) + a);
    }
}

沒錯, 就是那麼簡單, 指定大寫字母也是

public class RandomBigChar {


    public static void main(String[] args) {
        System.out.println(getRandomIn('A', 'E'));
    }
    public static char getRandomIn(char a, char b) {
        return (char) (Math.random() * (b - a) + a);
    }

}

如果,你掌握了,可以試試這個題是如何做:
生成4位網站驗證碼
1. 不能重複
2. 只能是數字和大小寫字元, 但是不能包含1,0,o,O,l,L,Z,2,9,g

整篇部落格程式碼 ,請點選下載(包括本題答案)
下載

相關推薦

java生成任意隨機字元數字其它

主角:Math.random() Math.random()是令系統隨機選取大於等於 0.0 且小於 1.0 的偽隨機 double 值,是Java、js等語言常用程式碼。 我要說的是用java語言,實現任意隨機資料 首先我們知道Math.random(

c/c++ 字串字元數字數字字元

在C/C++語言中沒有專門的字串變數,通常用字元陣列來存放字串。字串是以“\0”作為結束符。C/C++提供了豐富的字串處理函式,下面列出了幾個最常用的函式。   ● 字串輸出函式puts。   ● 字串輸出函式gets。   ● 字串連線函式strcat。   ● 字串複製

C語言字串字元數字數字字元

在C/C++語言中沒有專門的字串變數,通常用字元陣列來存放字串。字串是以“/0”作為結束符。C/C++提供了豐富的字串處理函式,下面列出了幾個最常用的函式。   ● 字串輸出函式puts。   ● 字串輸出函式gets。   ● 字串連線函式strcat。   ●

字串的賦字元數字之間的轉換

#include<stdio.h> //法1:字串賦值 void Mystrcpy(char des,charsrc) { int i; for(i=0;src[i]!=’\0’;i++) { des[i]=src[i]; } des=’\0’; }

java中計算時間差的方法(天數小時數分鐘數秒數)

藉助joda-time來計算兩個日期的差值,包含天數,小時,分鐘,秒數: 1、joda-time-2.9.9.jar包下載地址: 2、程式碼例項: package org.joda.time.test; import java.text.ParseException;

java 位元組流讀取圖片字元流讀取二進位制讀取

二進位制檔案讀取圖片,其實就是用位元組流讀取圖片。其實就是用Java中提供的對位元組流操作的類去操控圖片檔案 import java.io.*; import javax.swing.*; publ

java實現從命令行接收多個數字求和之後輸出結果

system 程序流程圖 sta num 思想 pri for循環 含義 自動 1.設計思想 首先要了解從命令行輸入數字的含義,不需要在程序中自己定義。需要定義int類的num和sum。之後利用num=Integer.parseInt(arg);將String型轉化為int

java-生成任意格式的json數據

mob utf 功能 [] charset logs ejs response 接口 最近研究java的東西。之前靠著自己的摸索,實現了把java對象轉成json格式的數據的功能,返回給前端。當時使用的是 JSONObject.fromObject(object) 方法把j

藍橋杯(java):數列特徵查詢整數楊輝三角特殊的數字迴文數

人生無趣,生活不易,一起找點樂子吧。     數列特徵: 問題描述 給出n個數,找出這n個數的最大值,最小值,和。 輸入格式 第一行為整數n,表示數的個數。 第二行有n個數,為給定的n個數,每個數的絕對值都小於10000。 輸出格式 輸出三行,每行一個整

java生成4位不重複字元(包含大寫字母、小寫字母、數字)

需要生成4位不重複的字元作為唯一引數,要求只能使用大寫字母、小寫字母和數字的組合。大寫字母26個、小寫字母26個、10個數字共62個字元。不重複排列個數:62*62*62*62=14776336個。 /** * * @author wzp * 2016-3-18

python讀取檔案資料讀入為字元數字轉換成數值型

import pandas as pdimport numpy as nppath='result.csv'order=open(path).readlines()//list型別,不過list裡存放的不是int型數值是字元型print(len(order))//獲取長度20

java-生成任意格式的json資料

     private  JSONObject createJSONObject() {               JSONObject result = new JSONOb

Java 生成任意位數永不重複的隨機數策略實現

在專案中遇到客戶一個需求,ID的生成策略:長度8位,使用者在知道自己的ID(如:10000018)後,不能通過ID來推測相關資訊,如使用者可能推測我是第18個註冊使用者,上一個註冊使用者的ID是10000017,這樣就不能很好的保護賬號安全了,可以憑證推測資料來

從1-33個數中隨機6個不同的數字模擬雙色球

public class Test_ext11 {/*** 隨機6個不同的雙色球紅球*/public static void main(String[] args) {int arrRed[]=new int[6]; //用來存放紅球int count =0;boolean

JAVA程式設計題】現在輸入n個數字以逗號分開;然後可選擇升或者降序排序;按提交鍵就在另一頁面顯示按什麼排序結果為提供reset

現在輸入n個數字,以逗號,分開;然後可選擇升或者降序排序;按提交鍵就在另一頁面顯示按什麼排序,結果為,提供reset import java.util.*; public class bycomma{

matlab_exercise(2)----輸入一個三位數依次輸出其個位數字十位數字百位數字

code 運行程序 bsp 向下取整 第一次 col color LG span 第一次作業--第二題 輸入一個三位數,依次輸出其個位數字,十位數字,百位數字。 1 %第二題 2 %註意:將文件命名為math_2018_4_02_01.m 3 %先判斷輸入的是不是三

深入MNIST手寫數字加cnn

Tensorflow python from __future__ import print_function import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data # number 1 t

斐波那契數列1.1.2.3.5.8......輸入一個數字比如3,顯示前面三個數字1,1,2.

int 都是 AR public 運行 sca ... 3.5 info 斐波那契數列(從第三個數字開始都是前面兩個數字的和),1.1.2.3.5.8......,輸入一個數字,比如3,顯示前面三個數字1,1,2. 1 public class practice {

JAVA生成帶環的單向連結串列(針對leetcode是否環那道題)

leetcode上面有一道題是判斷單向連結串列是否有環,方法基本上都是用快慢指標。 但是我突然想測試一下,但是不知道怎麼生成有環的連結串列,別說有環的,就是生成個連結串列都挺難的。 所以自己就在網上找了一下,發現生成連結串列還是有的。 但是沒有生成帶環的連結串列,所以自己總結了一下,寫了