精华内容
下载资源
问答
  • #java# #Java# #程序员#不知好几年前的一个问题:假设你希望产生位于0和某个上界之间的随机整数,你...一、如果n是一个比较小的2的乘方,经过一段相当的周期之后,它产生的随机数序列将会重复,生成的效率低下。二...

    #java# #Java# #程序员#

    53bebeeebc73cc854599dda550d64840.png

    不知好几年前的一个问题:假设你希望产生位于0和某个上界之间的随机整数,你该怎么去做?时隔多年后又重新记起,转眼一看,她已经有了很大的发展。

    几年前的写法

    104eca9aa36d05a9928a5ab65c9cdc1a.png

    突然翻出几年前写的东西,看到这个原始的写法,顿感漏洞百出。虽然这个写法目前都还感觉不错,但是有着三大缺陷。

    一、如果n是一个比较小的2的乘方,经过一段相当短的周期之后,它产生的随机数序列将会重复,生成的效率低下。

    二、如果n不是2的乘方,那么平均起来,有些数会比其他的数出现得更为频繁。

    如果n比较大,这个缺点就会非常明显,如果将N我们暂定为100万,重复执行1万次,我们会发现它打印出来的数接近于666666。由random方法产生的数字有三分之二落在随机数取值范围的前半部分。随机值就变成不是随机值了。

    调侃一句:说不定TX的抽奖就是这样的,我多年抽奖不中的原因貌似找到了。

    三、在极少数情况下,它会失败,因为会返回一个落在指定范围之外的数。

    因为这个方法试图通过调用Math.abs,将rnd. nextInt()返回的值映射为一个非负整数。如果nextInt()返回Integer.MIN VALUE,那么Math.abs也会返回Integer.MIN_VALUE,假设n不是2的乘方,那么取模操作符(%)将返回一个负数。这几乎肯定会使程序失败,而且这种失败很难重现!

    正常的写法

    64f7d681109e1409325cb24fec29493a.png

    这种写法简单,并且完美地避免了最原始的上面的问题,但是这似乎还不够。

    优秀的 ThreadLocalRandom

    从Java7开始,提供了一个全新的ThreadLocalRandom,就不应该再使用Random了。现在选择随机数生成器时,大多使用 ThreadLocalRandom。它会产生更高质量的随机数,并且速度非常快。我自己测试了一下,比Random快了3.6倍。但是对于ForkJoin Pool和并行Stream,则推荐使用SplittableRandom。

    0e5d462cd6001a540149e21588cb090d.png

    ThreadLocalRandom写法

    0f66ab22a152a1b66822a73a62ada42d.png

    SplittableRandom写法

    不知道友友们,有没有好的建议和意见,觉得不错,点赞支持下,相互交流交流

    展开全文
  • Java生成32位随机数随机数工具类
  • #java# #Java# #程序员#不知好几年前的一个问题:假设你希望产生位于0和某个上界之间的随机整数,你...一、如果n是一个比较小的2的乘方,经过一段相当的周期之后,它产生的随机数序列将会重复,生成的效率低下。二...

    #java# #Java# #程序员#

    76c635d83aa5fb1c48f7c42fd00189b9.png

    不知好几年前的一个问题:假设你希望产生位于0和某个上界之间的随机整数,你该怎么去做?时隔多年后又重新记起,转眼一看,她已经有了很大的发展。

    几年前的写法

    0271c31aa1a8907324d8b8dbfddeda53.png

    突然翻出几年前写的东西,看到这个原始的写法,顿感漏洞百出。虽然这个写法目前都还感觉不错,但是有着三大缺陷。

    一、如果n是一个比较小的2的乘方,经过一段相当短的周期之后,它产生的随机数序列将会重复,生成的效率低下。

    二、如果n不是2的乘方,那么平均起来,有些数会比其他的数出现得更为频繁。

    如果n比较大,这个缺点就会非常明显,如果将N我们暂定为100万,重复执行1万次,我们会发现它打印出来的数接近于666666。由random方法产生的数字有三分之二落在随机数取值范围的前半部分。随机值就变成不是随机值了。

    调侃一句:说不定TX的抽奖就是这样的,我多年抽奖不中的原因貌似找到了。

    三、在极少数情况下,它会失败,因为会返回一个落在指定范围之外的数。

    因为这个方法试图通过调用Math.abs,将rnd. nextInt()返回的值映射为一个非负整数。如果nextInt()返回Integer.MIN VALUE,那么Math.abs也会返回Integer.MIN_VALUE,假设n不是2的乘方,那么取模操作符(%)将返回一个负数。这几乎肯定会使程序失败,而且这种失败很难重现!

    正常的写法

    5dffa1947770d8282782dbc8fc56f77b.png

    这种写法简单,并且完美地避免了最原始的上面的问题,但是这似乎还不够。

    优秀的 ThreadLocalRandom

    从Java7开始,提供了一个全新的ThreadLocalRandom,就不应该再使用Random了。现在选择随机数生成器时,大多使用 ThreadLocalRandom。它会产生更高质量的随机数,并且速度非常快。我自己测试了一下,比Random快了3.6倍。但是对于ForkJoin Pool和并行Stream,则推荐使用SplittableRandom。

    2f5e834296d6a08db2aa6cab79938344.png

    ThreadLocalRandom写法

    ee8a8233175c2eee1da184de41e0f83c.png

    SplittableRandom写法

    不知道友友们,有没有好的建议和意见,觉得不错,点赞支持下,相互交流交流

    展开全文
  • Java生成短链

    2015-03-04 10:50:58
    生成思路: 1.将"原始链接(长链接)+key(自定义字符串,防止算法泄漏)"MD5加密 2.把加密字符按照 8 位一组 16 进制与 0x3FFFFFFF 进行位与运算,把得到的值与 0x...3.生成4以下的随机数,从输入数组中...

     

    生成思路:

    1.将"原始链接(长链接)+key(自定义字符串,防止算法泄漏)"MD5加密

    2.把加密字符按照 8 位一组 16 进制与 0x3FFFFFFF 进行位与运算,把得到的值与 0x0000003D 进行位与运算,取得字符数组 chars 索引,把取得的字符相加,每次循环按位右移 5 位,把字符串存入对应索引的输出数组(4组6位字符串)

    3.生成4以下的随机数,从输入数组中取出随机数对应位置的字符串,作为短链,存入数据库或者NoSql

    解析方式

    编写一个web处理程序,把从ur(如:http://url.51bi.com/zAnuAn)中解析短链接,将解析到的短链接(zAnuAn)与数据库中存入的原始链接进行匹配,跳转到匹配到的原始链接。

     

    package com.bjdata.test;
    
    import java.security.MessageDigest;
    import java.util.Random;
    
    
    public class ShortUrlTest {
        public static void main(String[] args) {
            String sLongUrl = "http://www.51bi.com/bbs/_t_278433840/"; // 原始链接
            System.out.println("长链接:"+sLongUrl);
            String[] aResult = shortUrl(sLongUrl);//将产生4组6位字符串
            // 打印出结果
            for (int i = 0; i < aResult.length; i++) {
                System.out.println("[" + i + "]:" + aResult[i]);
            }
            Random random=new Random();
            int j=random.nextInt(4);//产成4以内随机数
            System.out.println("短链接:"+aResult[j]);//随机取一个作为短链
        }
    
        public static String[] shortUrl(String url) {
            // 可以自定义生成 MD5 加密字符传前的混合 KEY
            String key = "test";
            // 要使用生成 URL 的字符
            String[] chars = new String[] { "a", "b", "c", "d", "e", "f", "g", "h",
                    "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t",
                    "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5",
                    "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H",
                    "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",
                    "U", "V", "W", "X", "Y", "Z"
    
            };
            // 对传入网址进行 MD5 加密
            String hex = md5ByHex(key + url);
    
            String[] resUrl = new String[4];
            for (int i = 0; i < 4; i++) {
    
                // 把加密字符按照 8 位一组 16 进制与 0x3FFFFFFF 进行位与运算
                String sTempSubString = hex.substring(i * 8, i * 8 + 8);
    
                // 这里需要使用 long 型来转换,因为 Inteper .parseInt() 只能处理 31 位 , 首位为符号位 , 如果不用long ,则会越界
                long lHexLong = 0x3FFFFFFF & Long.parseLong(sTempSubString, 16);
                String outChars = "";
                for (int j = 0; j < 6; j++) {
                    // 把得到的值与 0x0000003D 进行位与运算,取得字符数组 chars 索引
                    long index = 0x0000003D & lHexLong;
                    // 把取得的字符相加
                    outChars += chars[(int) index];
                    // 每次循环按位右移 5 位
                    lHexLong = lHexLong >> 5;
                }
                // 把字符串存入对应索引的输出数组
                resUrl[i] = outChars;
            }
            return resUrl;
        }
        /**
         * MD5加密(32位大写)    
         * @param src
         * @return
         */
        public static String md5ByHex(String src) {
            try {
                MessageDigest md = MessageDigest.getInstance("MD5");
                byte[] b = src.getBytes();
                md.reset();
                md.update(b);
                byte[] hash = md.digest();
                String hs = "";
                String stmp = "";
                for (int i = 0; i < hash.length; i++) {
                    stmp = Integer.toHexString(hash[i] & 0xFF);
                    if (stmp.length() == 1)
                        hs = hs + "0" + stmp;
                    else {
                        hs = hs + stmp;
                    }
                }
                return hs.toUpperCase();
            } catch (Exception e) {
                return "";
            }
        }
    
    }

     

    运行结果

    长链接:http://www.51bi.com/bbs/_t_278433840/
    [0]:fa6bUr
    [1]:ryEfeq
    [2]:zAnuAn
    [3]:auIJne
    短链接:zAnuAn

     

    分享sina的短链生成java代码

    比如可以将http://zuidaima.com/转换为http://t.cn/zlsvWVq

    如下图:

     



     

    package com.zuidaima.util;
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStreamWriter;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.net.URLEncoder;
    import java.util.Map;
    import java.util.LinkedHashMap;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    public class ShortenUrl {
    
    	private static final boolean DEBUG = true;
    
    	public static void main(String[] args) {
    		String url = "http://www.henshiyong.com/tools/sina-shorten-url.php";
    		Map<String, String> params = new LinkedHashMap<String, String>();
    		params.put("url", "http://www.google.com");
    		params.put("submit", "转换");
    
    		String data = null;
    
    		try {
    			data = postUrl(url, params);
    			if (DEBUG) {
    				System.out.println(data);
    			}
    		} catch (IOException ex) {
    		}
    
    		if (data != null) {
    			String shortUrl = getShortenUrl(data);
    			if (DEBUG) {
    				System.out.println(shortUrl);
    			}
    		}
    	}
    
    	public static String getShortenUrl(String content) {
    		String url = null;
    		List<String> resultList = getContext(content);
    
    		for (Iterator<String> iterator = resultList.iterator(); iterator
    				.hasNext();) {
    			url = iterator.next();
    		}
    
    		return url;
    	}
    
    	/**
    	 * Extract "XXXX" from "<textarea>XXXX</textarea>"
    	 * 
    	 * @param html
    	 * @return
    	 */
    	public static List<String> getContext(String html) {
    		List<String> resultList = new ArrayList<String>();
    		Pattern p = Pattern.compile("<textarea>(.*)</textarea>");
    		Matcher m = p.matcher(html);
    		while (m.find()) {
    			resultList.add(m.group(1));
    		}
    		return resultList;
    	}
    
    	public static class HttpException extends RuntimeException {
    
    		private int errorCode;
    		private String errorData;
    
    		public HttpException(int errorCode, String errorData) {
    			super("HTTP Code " + errorCode + " : " + errorData);
    			this.errorCode = errorCode;
    			this.errorData = errorData;
    		}
    
    		public int getErrorCode() {
    			return errorCode;
    		}
    
    		public String getErrorData() {
    			return errorData;
    		}
    
    	}
    
    	public static String postUrl(String url, Map<String, String> params)
    			throws IOException {
    		String data = "";
    		for (String key : params.keySet()) {
    			data += "&" + URLEncoder.encode(key, "UTF-8") + "="
    					+ URLEncoder.encode(params.get(key), "UTF-8");
    		}
    		data = data.substring(1);
    		// System.out.println(data);
    		URL aURL = new java.net.URL(url);
    		HttpURLConnection aConnection = (java.net.HttpURLConnection) aURL
    				.openConnection();
    		try {
    			aConnection.setDoOutput(true);
    			aConnection.setDoInput(true);
    			aConnection.setRequestMethod("POST");
    			// aConnection.setAllowUserInteraction(false);
    			// POST the data
    			OutputStreamWriter streamToAuthorize = new java.io.OutputStreamWriter(
    					aConnection.getOutputStream());
    			streamToAuthorize.write(data);
    			streamToAuthorize.flush();
    			streamToAuthorize.close();
    
    			// check error
    			int errorCode = aConnection.getResponseCode();
    			if (errorCode >= 400) {
    				InputStream errorStream = aConnection.getErrorStream();
    				try {
    					String errorData = streamToString(errorStream);
    					throw new HttpException(errorCode, errorData);
    				} finally {
    					errorStream.close();
    				}
    			}
    
    			// Get the Response
    			InputStream resultStream = aConnection.getInputStream();
    			try {
    				String responseData = streamToString(resultStream);
    				return responseData;
    			} finally {
    				resultStream.close();
    			}
    		} finally {
    			aConnection.disconnect();
    		}
    	}
    
    	private static String streamToString(InputStream resultStream)
    			throws IOException {
    		BufferedReader aReader = new java.io.BufferedReader(
    				new java.io.InputStreamReader(resultStream));
    		StringBuffer aResponse = new StringBuffer();
    		String aLine = aReader.readLine();
    		while (aLine != null) {
    			aResponse.append(aLine + "\n");
    			aLine = aReader.readLine();
    		}
    		return aResponse.toString();
    
    	}
    }
    
    	    			

     

    完整分享代码下载地址:http://www.zuidaima.com/share/1550463367924736.htm

     

    转自:http://www.cnblogs.com/zhanghaoh/archive/2012/12/24/2831264.html

               http://blog.csdn.net/yaerfeng/article/details/20289791

     

    http://jucelin.com/php-get-sina-weibo-short-url.html

     

    https://api.weibo.com/2/short_url/shorten.json?source=3818214747&url_long=http://www.baidu.com

    https://api.weibo.com/2/short_url/shorten.json?source=209678993&url_long=http://www.baidu.com

     

    public static void main(String[] args) throws Exception {
    	    String url = "https://api.weibo.com/2/short_url/shorten.json?source=3818214747&url_long=http://www.baidu.com"; //source=209678993
    	    URL aURL = new URL(url);
            HttpURLConnection aConnection = (java.net.HttpURLConnection) aURL.openConnection();
            InputStream resultStream = aConnection.getInputStream();
            
            String responseData = streamToString(resultStream);
            System.out.println(responseData);
        }
    	
    	
    	private static String streamToString(InputStream resultStream)
    	                throws IOException {
    	    BufferedReader aReader = new java.io.BufferedReader(
    	        new java.io.InputStreamReader(resultStream));
    	    StringBuffer aResponse = new StringBuffer();
    	    String aLine = aReader.readLine();
    	    while (aLine != null) {
    	        aResponse.append(aLine + "\n");
    	        aLine = aReader.readLine();
    	    }
    	    return aResponse.toString();
    	    
    	}

     

    上面的api微博和main测试程序的

    输出结果json都为:

    {"urls":[
    {"object_type":"priMessage","result":true,"url_short":"http://t.cn/h5mwx","object_id":"2016054:230321b814888b6b8d2fee3956617f3569f79c8288","url_long":"http://www.baidu.com","type":39}
    ]}

     

     附新浪微博短链接口:

    http://open.weibo.com/wiki/2/short_url/shorten

     

     

     

    展开全文
  • Java生成短链接

    2018-02-28 14:58:00
    生成思路: 1.将"原始链接(长链接)+key(自定义字符串,防止算法泄漏)"MD5加密 2.把加密字符按照 8 位一组 16 进制与 0x3FFFFFFF 进行位与运算,把得到的值与 0x0000003D ...3.生成4以下的随机数,从输入数组中...

    生成思路:

    1.将"原始链接(长链接)+key(自定义字符串,防止算法泄漏)"MD5加密

    2.把加密字符按照 8 位一组 16 进制与 0x3FFFFFFF 进行位与运算,把得到的值与 0x0000003D 进行位与运算,取得字符数组 chars 索引,把取得的字符相加,每次循环按位右移 5 位,把字符串存入对应索引的输出数组(4组6位字符串)

    3.生成4以下的随机数,从输入数组中取出随机数对应位置的字符串,作为短链,存入数据库或者NoSql

    解析方式

    编写一个web处理程序,把从ur(如:http://url.51bi.com/zAnuAn)中解析短链接,将解析到的短链接(zAnuAn)与数据库中存入的原始链接进行匹配,跳转到匹配到的原始链接

    复制代码
    package com.bjdata.test;
    
    import java.security.MessageDigest;
    import java.util.Random;
    
    
    public class ShortUrlTest {
        public static void main(String[] args) {
            String sLongUrl = "http://www.51bi.com/bbs/_t_278433840/"; // 原始链接
            System.out.println("长链接:"+sLongUrl);
            String[] aResult = shortUrl(sLongUrl);//将产生4组6位字符串
            // 打印出结果
            for (int i = 0; i < aResult.length; i++) {
                System.out.println("[" + i + "]:" + aResult[i]);
            }
            Random random=new Random();
            int j=random.nextInt(4);//产成4以内随机数
            System.out.println("短链接:"+aResult[j]);//随机取一个作为短链
        }
    
        public static String[] shortUrl(String url) {
            // 可以自定义生成 MD5 加密字符传前的混合 KEY
            String key = "test";
            // 要使用生成 URL 的字符
            String[] chars = new String[] { "a", "b", "c", "d", "e", "f", "g", "h",
                    "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t",
                    "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5",
                    "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H",
                    "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",
                    "U", "V", "W", "X", "Y", "Z"
    
            };
            // 对传入网址进行 MD5 加密
            String hex = md5ByHex(key + url);
    
            String[] resUrl = new String[4];
            for (int i = 0; i < 4; i++) {
    
                // 把加密字符按照 8 位一组 16 进制与 0x3FFFFFFF 进行位与运算
                String sTempSubString = hex.substring(i * 8, i * 8 + 8);
    
                // 这里需要使用 long 型来转换,因为 Inteper .parseInt() 只能处理 31 位 , 首位为符号位 , 如果不用long ,则会越界
                long lHexLong = 0x3FFFFFFF & Long.parseLong(sTempSubString, 16);
                String outChars = "";
                for (int j = 0; j < 6; j++) {
                    // 把得到的值与 0x0000003D 进行位与运算,取得字符数组 chars 索引
                    long index = 0x0000003D & lHexLong;
                    // 把取得的字符相加
                    outChars += chars[(int) index];
                    // 每次循环按位右移 5 位
                    lHexLong = lHexLong >> 5;
                }
                // 把字符串存入对应索引的输出数组
                resUrl[i] = outChars;
            }
            return resUrl;
        }
        /**
         * MD5加密(32位大写)    
         * @param src
         * @return
         */
        public static String md5ByHex(String src) {
            try {
                MessageDigest md = MessageDigest.getInstance("MD5");
                byte[] b = src.getBytes();
                md.reset();
                md.update(b);
                byte[] hash = md.digest();
                String hs = "";
                String stmp = "";
                for (int i = 0; i < hash.length; i++) {
                    stmp = Integer.toHexString(hash[i] & 0xFF);
                    if (stmp.length() == 1)
                        hs = hs + "0" + stmp;
                    else {
                        hs = hs + stmp;
                    }
                }
                return hs.toUpperCase();
            } catch (Exception e) {
                return "";
            }
        }
    
    }
    复制代码

    运行结果

    长链接:http://www.51bi.com/bbs/_t_278433840/
    [0]:fa6bUr
    [1]:ryEfeq
    [2]:zAnuAn
    [3]:auIJne
    短链接:zAnuAn

     

    转:https://www.cnblogs.com/zhanghaoh/archive/2012/12/24/2831264.html

     

    转载于:https://www.cnblogs.com/xijin-wu/p/8483649.html

    展开全文
  • 一般来说,我们使用M =(2 ^ 31)-1 = 2147483647,这是一个31位素数,A = 48271,这个A可以使M得到一个完整的周期随机数生成算法,这里C是奇数,如果数据如果选择不好,很有可能在时间内获得一个随机数. 例如,如果...
  • java,url长链接生成短链接,短链接生成器,自定义字符串,对字符串md5混合KEY加密,根据短链接获得key值,不重复的随机数,不重复的随机字符串 1 package com.zdz.test; 2 3 import java.math.BigInteger; 4 ...
  • 自我提升之随机数生成 这段时间公司都在弄坐标偏移的问题,但是因为没有设备准确的坐标位置所以不能在地图上准确定位出来。问题就来了,最近公安又要审查地图坐标问题,可是前端人员也不可能在时间内吧几万个设备...
  • 解密随机数生成

    千次阅读 2017-01-03 10:12:34
    时间写了个公司年会抽奖的程序,不少人反应有的人连续几年中奖,于是怀疑程序的问题,今天特地抽出点时间翻看了下java的源码,解读下随机函数的生成算法。 在Eclipse中输入java.util.Random,按F3转到Random类的...
  • 使用JAVA的random类可以来产生随机数,但不要每次使用都new Random这个类对象,因为这个类是以当前系统时间来作为seed生成随机数的,如果每次都new(特别是在一个循环里面new,间隔时间非常),那么,生成随机数...
  • 提供两种id生成方式分别可以生成数字编码和字母加数字混合编码可以满足不同的应用场景,一种基于时间戳+随机数方式对于id识别要求长度或数字需求比较适合,另外一种组合时间戳(纳秒级)+全局唯一的IEEE机器识别号...
  • 1.将"原始链接(长链接)+key(自定义字符串,防止算法泄漏)"MD5...3.生成4以下的随机数,从输入数组中取出随机数对应位置的字符串,作为短链,存入数据库或者NoSql 解析方式 编写一个web处理程序,把从ur(如:http://url
  • 如果允许产生的随机字符串是可猜测的(随机字符串比较都,或者使用有缺陷的随机数生成器),进而导致攻击者可能会劫持到会话的,可以使用一个相对简单随机数生成代码,如下所示: public class Random...
  • Java常用工具类汇总

    万次阅读 2021-03-04 16:03:15
    Java常用工具类汇总 时间工具类,根据本月时间获取上月一号零点零时零分零...java-URL连接的生成(保证生成的唯一性) 持续更新!!!!! 写作不易,如果您觉得写的不错,欢迎给博主点赞、收藏、评论、收藏来一波~
  • 极简教学Java的SM3加密算法[附上github源码]讲文之前,简单介绍一下SM3算法SM3算法:SM3杂凑算法是我国自主设计的密码杂凑算法,适用于商用密码应用中的数字签名和验证消息认证码的生成与验证以及随机数生成,可...
  • java 订单号

    千次阅读 2014-12-15 23:16:16
    首先,订单号有3个性质:1.唯一性 2.不可推测性 3.效率性 ...我在java下定制的订单号生成方式如下: int r1=(int)(Math.random()*(10));//产生2个0-9的随机数 int r2=(int)(Math.random()*(10)); long
  • 在某种程度上,随机数生成器是课程的主角。 Random类使用合理选择的参数实现LCG。 但是它仍然具有以下功能:相当的时间(2 ^ 48)比特并非均等地随机(请参阅我关于比特位置随机性的文章)只会产生一小部分值的组合...
  • 如果您的发行版可能会发生变化,那么您不希望...然后,您可以生成从0到权重总和的随机数.然后根据您的加权分布统计输出.创建地图后,选择条目的代码非常:Random rand = new Random();...double rnd = rand.nextDoub...
  • 在某种程度上,随机数发生器是马的马。 Random类实现具有合理选择的参数的LCG。但它仍然表现出以下特点:>相当的时期(2 ^ 48)>位不是同样随机的(见我的文章randomness of bit positions)>将只生成一小...
  • 如何生成唯一订单号

    千次阅读 2017-09-27 17:56:02
    首先,订单号有3个性质:1.唯一性 2.不可推测性 3....我在java下定制的订单号生成方式如下:int r1=(int)(Math.random()*(10));//产生2个0-9的随机数int r2=(int)(Math.random()*(10));long now = S
  • SM3算法:SM3杂凑算法是我国自主设计的密码杂凑算法,适用于商用密码应用中的数字签名和验证消息认证码的生成与验证以及随机数生成,可满足多种密码应用的安全需求。为了保证杂凑算法的安全性,其产生的杂凑值的...
  • Effective-Java 了解并使用库

    千次阅读 2020-06-24 14:57:12
    59. 了解并使用库 假设你想要生成 0 到某个上界之间的随机整数。面对这个常见任务,许多程序员会编写一个类似这样的小方法: ...首先,如果 n 是小的平方数,随机数序列会在相当的时间内重复。第二个缺陷是,如果
  • 口令被轻松攻击的主要原因在于口令过或者过于简单。如果口令很长,则计算所有组合的消息摘要可能要成百上千年,这将大大加大了生成字典的难度。同时口令过程也会给用户带来...生成随机数(盐) MessageDigest对象的应用
  • 关于JAVA和C#的AES + Base64加密互通!~

    千次阅读 2011-06-08 15:02:00
    首先通过了解JAVA和C#的实现了解到c#默认运算模式为CBCjava默认为ECB 所以我们第一步算法是要 修改为一致的运算模式 我们采用 ECB 因为 ECB 不需要 IV 然后 在对KEY上 他们要求的是6 16 或24位,以往的做法是...
  • 首先,订单号有3个性质:1.唯一性 2.不可推测性 3.效率性唯一性和不可...我在java下定制的订单号生成方式如下:int r1=(int)(Math.random()*(10));//产生2个0-9的随机数int r2=(int)(Math.random()*(10));long no...
  • java时间格式大全(算法源码) java,date,时间,时间格式,算法源码 * * @return */ public static String getTimeShort() { SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss"); Date currentTime...
  • 一组数字随机排序

    2009-02-16 20:10:42
    [b]关键字:[/b]  随机排序、JAVA、算法、一组数字  今天在网上看到了数组随机排序了算法。感觉非常巧妙,只有短短的几句代码,算法的力量真是太强大了。... * 生成不重复随机数的一种算法。 * * @autho...
  • 一组数字随机排序-隔壁老王-iteye技术网站 2012年01月01日  关键字:  随机排序、JAVA、算法、一组数字  今天在网上看到了数组随机排序了算法。感觉非常巧妙,只有短短... /** * 生成不重复随机数的一种...
  • 沿途学习 这个仓库包含了我学到的一些东西,包括算法,...随机数生成 单服务器排队系统 库存系统 使用Javascript的专案 狗年 信用卡检查器 Lodash 迷你短绒 神秘生物 使用HTML的项目 熊博客 时尚博客 关于狗 城市博客

空空如也

空空如也

1 2
收藏数 34
精华内容 13
关键字:

java生成短随机数

java 订阅