为用户生成RANDOM ID

时间:2018-05-05 15:46:19

标签: java android

我想生成一个用户将使用的随机ID,这意味着我希望每个用户都拥有一个,我希望它变得简单而且完全随机(也不想重复两次)

4 个答案:

答案 0 :(得分:1)

尝试UUID.randomUUID().toString();

答案 1 :(得分:1)

试试这个:

long id = System.currentTimeMillis();

答案 2 :(得分:0)

(你需要看看java中的Random类。它提供了随机数,这非常有用。

要回答你的问题,我建议在ID中使用一串允许的字符,并使用StringBuilder构建一个新字符串,方法是从ALLOWED_CHARACTERS字符串中选择随机字符。 像

这样的东西
struct OpenResult {
  enum { OK = 0, SameHandleOK = 1, InvalidHandle = 10, CCloseFailed = 20,
         InvalidFd = 30, OpenFailed = 40 } rc = OK;
  explicit operator bool() const { return rc < InvalidHandle; };
};

OpenResult open(QFile* file, QIODevice::OpenMode mode, HANDLE handle) {
  if (handle == INVALID_HANDLE_VALUE)
    return {OpenResult::InvalidHandle};
  if (file->isOpen() && windowsHandleOf(file) == handle)
    return {OpenResult::SameHandleOK};
  file->close();
  if (auto fd = file->handle() != -1)
    if (_close(fd)) // the C handle is still open, don't leak it
      return {OpenResult::CCloseFailed};
  int flags = 0;
  if (mode & QIODevice::Append)
    flags |= _O_APPEND;
  if (!(mode & QIODevice::WriteOnly))
    flags |= _O_RDONLY;
  auto fd = _open_osfhandle((intptr_t)handle, flags);
  if (fd == -1)
    return {OpenResult::InvalidFd};
  if (!file->open(fd, mode, QFileDevice::AutoCloseHandle))
    return {OpenResult::OpenFailed};
  return {};
}

此外,虽然不太可能,但您可能会得到一些重复。如果您确实想要防止重复,可以使用字符串的HashSet来查看您的ID是否已被使用。通过将您的ID放入HashSet,您可以有效地检查是否已生成ID。

答案 3 :(得分:0)

您可以使用SecureRandom类生成随机数。该课程在java.security.SecureRandom中提供。连接一些字母或单词以形成ID。