我的应用程序结构就像是,有1000个masjids / mosques,每个masjid都被赋予了一个独特的id,如1,2,3,4 ..... 1000。现在每个清真寺都有七个与之相关的警报,我希望为每个警报生成一个唯一的请求代码,以便它们不会相互重叠,
以下是代码:
//note integer NamazType has range 0 to 5
public int generateRequestCodeForAlarm(int MasjidID,int NamazType )
{
return (MasjidID *(10)) + (namazType);
}
此代码是否有效?
答案 0 :(得分:2)
你可以简单地连接masjidID和namaztype(或者特别是namaz ID)。这将始终是唯一的。
public int generateRequestCodeForAlarm(int MasjidID,int NamazType )
{
return Integer.ParseInt(String.valueOf(MasjidID)+""+NamazType)
}
答案 1 :(得分:0)
使用Random类:
尝试这样:
//note integer NamazType has range 0 to 5
public int generateRequestCodeForAlarm(int MasjidID, int NamazType)
{
return (MasjidID * (Math.abs(new Random().nextInt()))) + (namazType);
}
答案 2 :(得分:0)
它肯定会起作用。
public int generateRequestCodeForAlarm(int MasjidID,int NamazType )
{
return (MasjidID*(10)) + (NamazType );
}
输出:
查看this
答案 3 :(得分:-1)
如果MasjidID和NamazType是唯一的,那么
Integer.parseInt( MasjidID + "" + NamazType );
足以做到这一点!
示例:强>
Masjid ID = 96, Namaz type = 1, Unique no = 961
MasjidId = 960, Namaz type = 1, Unique no = 9601
MasjidID = 999, Namaz type = 6, Unique no = 9996
我找不到任何重复的方式。但是,它与
非常相似(MasjidID * 10) + NamazType
无论MasjidID和NamazType如何,如果需要生成一个随机数,可以使用它。
public class NoRepeatRandom {
private int[] number = null;
private int N = -1;
private int size = 0;
public NoRepeatRandom(int minVal, int maxVal)
{
N = (maxVal - minVal) + 1;
number = new int[N];
int n = minVal;
for(int i = 0; i < N; i++)
number[i] = n++;
size = N;
}
public void Reset() { size = N; }
// Returns -1 if none left
public int GetRandom()
{
if(size <= 0) return -1;
int index = (int) (size * Math.random());
int randNum = number[index];
// Swap current value with current last, so we don't actually
// have to remove anything, and our list still contains everything
// if we want to reset
number[index] = number[size-1];
number[--size] = randNum;
return randNum;
}
}