Java 生成随机字母

Java 生成随机字母,java,random,Java,Random,我想输入一个字母或数字并生成一个随机输出(字母或数字)。对于相同的输入,输出也应该始终相同。有人能告诉我,如何在这个特定的范围内生成这个随机输出。随机输出的要点是“随机性”,如果你想要一个方法为相同的输入生成相同的输出,那么它就根本不是随机的 如果您只需要一个执行输入->的方法(此处执行任务)->输出 其中,对于任何输入“i”,输出“o”是固定的 比如,如果你输入1,你总是得到247(或任何其他数字) 然后,只要编出任何数学公式(例如,(sin(x)*73)/43或tan(x),如果你不想让输出

我想输入一个字母或数字并生成一个随机输出(字母或数字)。对于相同的输入,输出也应该始终相同。有人能告诉我,如何在这个特定的范围内生成这个随机输出。

随机输出的要点是“随机性”,如果你想要一个方法为相同的输入生成相同的输出,那么它就根本不是随机的

如果您只需要一个执行输入->的方法(此处执行任务)->输出 其中,对于任何输入“i”,输出“o”是固定的 比如,如果你输入1,你总是得到247(或任何其他数字)
然后,只要编出任何数学公式(例如,(sin(x)*73)/43或tan(x),如果你不想让输出重复),其中“x”是你的输入,这将为任何输入生成一个“看似”不相关的输出,对于任何给定的数字,它总是固定的。

随机输出点是“随机性”,如果您想要一个方法为相同的输入生成相同的输出,那么它根本不是随机的

如果您只需要一个执行输入->的方法(此处执行任务)->输出 其中,对于任何输入“i”,输出“o”是固定的 比如,如果你输入1,你总是得到247(或任何其他数字)
然后,只要建立任何数学公式(例如,(sin(x)*73)/43或tan(x),如果不希望输出重复),其中“x”是您的输入,这将为任何输入生成一个“看似”不相关的输出,对于任何给定的数字,它都是固定的。

首先,我将使字符串输入的情况与整数输入的情况等效:我能想到的最简单的方法是使用
str.hashCode()
Java中的每个对象都定义了这个方法,从任何类型的输入生成整数都是非常简单的方法

现在让我们假设您必须基于单个给定的整数种子生成随机字符串。你可以这样做:

public String  generateString(int seed) {
   Random rnd = new Random(12);
   int len = 10 + rnd.nextInt()  % 20; // achieving random string length in [10, 30)
   StringBuilder sb = new StringBuilder(); // here we will build the string
   for (int i = 0; i < len; i++) {
        sb.append(32 + (char) rnd.nextInt() % 94); // displayable ASCIs are between 32 and 127
   }
   return sb.toString();
}
公共字符串生成器字符串(int seed){
随机rnd=新随机(12);
int len=10+rnd.nextInt()%20;//在[10,30]中实现随机字符串长度
StringBuilder sb=new StringBuilder();//这里我们将构建字符串
对于(int i=0;i
首先,我将使字符串输入的大小写与整数输入的大小写等效:我能想到的最简单的方法是使用
str.hashCode()
Java中的每个对象都定义了这个方法,从任何类型的输入生成整数都非常简单

现在让我们假设您必须基于单个给定整数'seed'生成随机字符串。您可以这样做:

public String  generateString(int seed) {
   Random rnd = new Random(12);
   int len = 10 + rnd.nextInt()  % 20; // achieving random string length in [10, 30)
   StringBuilder sb = new StringBuilder(); // here we will build the string
   for (int i = 0; i < len; i++) {
        sb.append(32 + (char) rnd.nextInt() % 94); // displayable ASCIs are between 32 and 127
   }
   return sb.toString();
}
公共字符串生成器字符串(int seed){
随机rnd=新随机(12);
int len=10+rnd.nextInt()%20;//在[10,30]中实现随机字符串长度
StringBuilder sb=new StringBuilder();//这里我们将构建字符串
对于(int i=0;i
如果我理解你的意思是正确的,也许这就是你想要做的

import java.util.Random;
class t
{
    public static void main(String[] args)
    {
        Random rand = new Random(100);

        char[] alpha = new char[26];    //to store alpahbets
        int[] rlist = new int[26];      //to store random numbers


        for (int j = 0; j<26; j++)
        {
            alpha[j] = (char)(j+97);
            rlist[j] = rand.nextInt(10);
            System.out.println(rlist[j]);
        }

        //input
        char input = 'a';
        //output
        int loc = (int)input-97;
        System.out.println(alpha[rlist[loc]]);
    }
}
import java.util.Random;
t类
{
公共静态void main(字符串[]args)
{
随机随机数=新随机数(100);
char[]alpha=新字符[26];//用于存储alpahbets
int[]rlist=new int[26];//存储随机数

对于(int j=0;j如果我理解正确,也许这就是你想要做的

import java.util.Random;
class t
{
    public static void main(String[] args)
    {
        Random rand = new Random(100);

        char[] alpha = new char[26];    //to store alpahbets
        int[] rlist = new int[26];      //to store random numbers


        for (int j = 0; j<26; j++)
        {
            alpha[j] = (char)(j+97);
            rlist[j] = rand.nextInt(10);
            System.out.println(rlist[j]);
        }

        //input
        char input = 'a';
        //output
        int loc = (int)input-97;
        System.out.println(alpha[rlist[loc]]);
    }
}
import java.util.Random;
t类
{
公共静态void main(字符串[]args)
{
随机随机数=新随机数(100);
char[]alpha=新字符[26];//用于存储alpahbets
int[]rlist=new int[26];//存储随机数

对于(int j=0;jAnd输出对于相同的输入也应始终相同。?random的用途是什么?例如useful@Jayan,也许他指的是随机联想。我想用它来掩蔽。好吧,忘了这部分。请告诉我如何根据input@Jayan这称为伪随机生成ST现代语言提供了这样的功能(对于java,您需要在种子中传递,对于C++ <代码> RAND())/Cuffe(默认情况下是这样的)。伪随机生成非常有用,尤其是当您想再次复制一个案例时。对于相同的输入,输出也应始终相同。?随机的用途是什么?可以举一个例子useful@Jayan,也许他指的是随机关联。我想用它来掩蔽。好吧,忘了这部分。请告诉我如何生成random字母表根据input@Jayan这就是所谓的伪随机生成。大多数现代语言提供了这样的功能(对于java,你需要在种子中传递,对于C++ <代码> RAND())/Cuffe(默认情况下是这样的).pseudo random generations非常有用,尤其是当您想再次复制大小写时。我在您提到的注释中看到,您希望对字符执行此操作,此方法可以轻松地修改(char)(32+(((tan((int)x)*53)/42))%26))我在您提到的注释中看到,您希望对字符执行此操作,这个方法可以很容易地修改为(char)(32+(((tan((int)x)*53)/42))%26),但它是否为相同的输入生成相同的输出?就像我输入字符串“this is test”取这个字符串的每个字符,我生成随机字母表,它为相同的输入生成不同的输出…我使用65+rand.nextInt((int)c)%24进行随机生成。例如,“这是测试”它应该为所有I和s生成相同的字符,但它没有。我做错了什么?对于测试,我通过rand.setseed(2)将种子设置为2嗯,也许我误解了你的任务。我想如果我把输入字符串作为一个整体,每次都应该为它生成相同的随机字符串。当前代码甚至可以生成不同长度的随机字符串