java 获得一个长度为11位的long类型随机数
时间: 2023-11-22 18:04:30 浏览: 50
可以使用Java的Random类来生成随机数,然后将其转换为long类型。以下是一个示例代码:
```
import java.util.Random;
public class RandomLong {
public static void main(String[] args) {
Random random = new Random();
long randomNumber = random.nextLong() & Long.MAX_VALUE; // 保证正数且长度为64位
String randomString = String.valueOf(randomNumber).substring(0, 11); // 取前11位
System.out.println("随机数为:" + randomString);
}
}
```
这个代码生成一个64位的随机数,然后将其转换为正数,最后取前11位作为结果。注意,如果随机数的前几位是0,这个代码会忽略这些0并返回长度小于11的结果。如果需要确保结果的长度为11位,可以在取子串之前补0。
相关问题
Java如何生成28位随机数
可以使用Java提供的SecureRandom类来生成28位随机数。SecureRandom类提供了一种安全的随机数生成器,可以生成高质量的随机数。具体实现代码如下:
```java
import java.security.SecureRandom;
public class RandomNumberGenerator {
public static void main(String[] args) {
SecureRandom random = new SecureRandom();
String randomNum = Long.toString(random.nextLong() & Long.MAX_VALUE, 36);
while (randomNum.length() < 28) {
randomNum = "0" + randomNum;
}
System.out.println("28位随机数:" + randomNum);
}
}
```
运行该程序可以得到一个28位的随机数。其中,使用了Long.toString()方法将long类型的随机数转换成36进制字符串,生成的字符串长度可能小于28位,因此需要在前面补0,直到生成的字符串长度为28位。
用Java.swing写一个生成从“0123456789abcdefghijkmnopqrstuvwxyzABCDEFG”中每次产生四个随机数作为验证码的程序
好的,下面是Java.swing生成验证码的程序代码:
```java
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class VerifyCode extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
private final String VERIFY_CODES = "0123456789abcdefghijkmnopqrstuvwxyzABCDEFG";// 验证码字符集
private final int VERIFY_SIZE = 4;// 验证码长度
private JPanel jp;
private JButton jb;
private String verifyCode;
public VerifyCode() {
setTitle("验证码");
setSize(250, 150);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jp = new JPanel();
jp.setBackground(Color.WHITE);
add(jp, BorderLayout.CENTER);
jb = new JButton("生成验证码");
jb.addActionListener(this);
add(jb, BorderLayout.SOUTH);
setVisible(true);
}
private String generateVerifyCode() {
Random rand = new Random();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < VERIFY_SIZE; i++) {
sb.append(VERIFY_CODES.charAt(rand.nextInt(VERIFY_CODES.length())));
}
return sb.toString();
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == jb) {
verifyCode = generateVerifyCode();
jp.repaint();
}
}
public static void main(String[] args) {
new VerifyCode();
}
class VerifyPanel extends JPanel {
private static final long serialVersionUID = 1L;
public void paint(Graphics g) {
super.paint(g);
g.setColor(Color.BLACK);
g.setFont(new Font("Times New Roman", Font.BOLD, 20));
g.drawString(verifyCode, 60, 60);
}
}
}
```
这个程序会在窗口中生成一个“生成验证码”的按钮,点击它可以生成一个由指定字符集中的字符组成的长度为4的随机字符串作为验证码,并在窗口中显示出来。