- Siêu lớp và danh mục iOS/Objective-C
- object-c - -1001 lỗi khi NSURLSession vượt qua httpproxy và /etc/hosts
- java - Nhận địa chỉ url bằng lớp mạng
- ios - Âm thanh không phát trong thông báo đẩy
Tôi có luồng đầu vào có kích thước n và tôi muốn tạo luồng đầu ra có kích thước k chứa các phần tử ngẫu nhiên khác nhau của luồng đầu vào mà không cung cấp bất kỳ bộ nhớ bổ sung nào cho các phần tử mẫu đã chọn.
Thuật toán tôi dự định sử dụng về cơ bản như sau:
cho từng phần tử trong luồng đầu vào
nếu ngẫu nhiên()
giảm k
phần tử đầu ra
nếu k = 0
dừng lại
end if
end if
giảm n
kết thúc cho
Hàm ngẫu nhiên() tạo ra một số từ phân phối ngẫu nhiên [0..1). Tôi tin rằng nguyên tắc hoạt động của thuật toán rất đơn giản.
Mặc dù thuật toán có thể kết thúc sớm khi phần tử cuối cùng được chọn nhưng nhìn chung thuật toán vẫn xấp xỉ O(n). Lúc đầu, nó có vẻ hoạt động như mong đợi (xuất ra các phần tử được phân bổ gần như đồng đều nhưng vẫn ngẫu nhiên từ luồng đầu vào), nhưng tôi nghĩ rằng khi k nhỏ hơn nhiều so với n thì có thể có xu hướng chọn các phần tử sau này không đồng đều. Tuy nhiên, tôi không chắc chắn về điều này...vì vậy tôi muốn xác định bằng cách này hay cách khác. Tôi cũng muốn biết liệu thuật toán nhanh hơn có tồn tại hay không. Rõ ràng, vì phải tạo ra k phần tử nên thuật toán không thể nhanh hơn O(k). Đối với giải pháp O(k), người ta có thể giả sử rằng có một hàm Skip(x) có thể bỏ qua x phần tử trong luồng đầu vào (nhưng không quay ngược) trong thời gian O(1). Tuy nhiên, tôi vẫn muốn giữ nguyên yêu cầu không yêu cầu thêm bộ nhớ.
câu trả lời hay nhất
Nếu đó là một luồng thực sự, nó cầnTRÊN)
Đã đến lúc quét nó.
Thuật toán hiện tại của bạn vẫn ổn. (Trước đây tôi đã sai.) Bạn có thể chứng minh bằng quy nạp rằng bạn không có lựa chọn nào khác Tôi
Xác suất của phần tử đầu tiên trong . thử là 1 - i/n = (ni)/n
.Trước hết cho tôi=0
là đúng qua kiểm tra. Bây giờ, nếu bạn chưa có Tôi
Xác suất để chọn được nó ở lần thử thứ 1 là 1/(ni)
.Rồi vào i+1
Tỷ lệ chọn nó trong lần thử đầu tiên là ((ni)/n) * (1/(ni)) = 1/n
.Điều này có nghĩa là trong lần đầu tiên i+1
Xác suất để không chọn nó là1 - i/n - 1/n = 1 - (i+i)/n
.Điều này hoàn thành việc quy nạp. Vì vậy trong lần đầu tiên k
Xác suất chọn được phần tử đầu tiên trong tris là xác suất không chọn được phần tử đó, hoặc 1 - (n - k/n) = k/n
.
nhưng nếu bạn có O(1)
phải làm gì? Truy cập bất kỳ phần tử nào? Xin lưu ý rằng việc chọn k
Lấy cũng giống như việc lựa chọnnk
rời khỏi. Do đó, không mất tính tổng quát, ta có thể giả sử k <= n/2
.Điều này có nghĩa là chúng ta có thể sử dụng thuật toán ngẫu nhiên như thế này:
đã chọn = set()
count_chosen = 0
trong khi count_chosen < k:
lựa chọn = Random_element(stream)
nếu lựa chọn không được chọn:
đã chọn.add(lựa chọn)
count_chosen = count_chosen + 1
Bộ sưu tập sẽ Được rồi)
khoảng trống, vì mỗi lựa chọn ngẫu nhiên đều mới đối với bạn với xác suất ít nhất là 0,5
, thời gian chạy dự kiến không dài hơn2k
Sự lựa chọn kém.
Về thuật toán - lấy mẫu ngân hàng bộ nhớ không đổi, O(k) có thể không? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/50065008/
Java 库和 android 库有什么区别,各自有什么优点/缺点? 最佳答案 您可以在 Android 应用程序中包含标准 Java .jar 文件库。它们在 .apk 构建时被翻译成 Dalvik
所以,我现在的代码就像从 Java 层加载库(比如 liba.so),并在内部 liba.so 加载 libb.so。因此,如果我必须将所有库打包到 APK 中并将其安装在没有 root 访问权限的设
我想在我的系统中设置 LEDA 库。 我已经从以下链接下载了 LEDA 库 http://www.algorithmic-solutions.info/free/d5.php Instruct
我想用 autoconf 创建一个共享库。但是,我希望共享库具有“.so”扩展名,而不是以“lib”开头。基本上,我想制作一个加载 dlopen 的插件。 .是否有捷径可寻? 当我尝试使用 autoc
我需要在 Apps 脚本应用程序上修改 PDF。为此,我想使用 JS 库:PDF-LIB 我的代码: eval(UrlFetchApp.fetch("https://unpkg.com/pdf-lib
我正在构建一个使用以下 Boost header 的程序(我使用的是 Microsoft Visual C++ 10), #include #include #include #include
当我通过 cygwin 在 hadoop 上运行此命令时: $bin/hadoop jar hadoop-examples-*.jar grep input output 'dfs[a-z.]+' 我
我已经通过 vcpgk 成功安装了一个 C++ 库,名为:lmdb:x64-windows 我还安装了lmdb通过 Cabal 安装的 Haskell 绑定(bind)包 在尝试测试 lmdb 包时:
我该如何解决这个问题? 我刚刚将 javacv jar 文件复制到我的项目 Lib 文件夹下,但出现了这个错误! 我可以找到这个thread来自谷歌,但不幸的是,由于我国的谷歌限制政策,该页面无法打开
我有一个 Android 库项目 FooLib。 FooLib 引用 Android Context 之类的东西,但不需要任何资源文件(res/ 中的东西)所以我目前将其打包为供我的应用使用的 JAR
我正在开发一个 Android 应用程序(使用 Android Studio),它能够通过手势识别算法了解您正在进行的 Activity 。对于我使用 nickgillian ithub 帐户上可用的
关于从 .NET Framework 项目中引用 .NET Standard 类库的问题有很多类似的问题,其中 netstandard 库中的 NuGet 包依赖项不会流向 netframework
我已经从互联网上下载了 jna-4.2.2.jar,现在想将这个 jar 导入到我的项目中。但是当我试图将这个 jar 导入我的项目时,出现以下错误。 [2016-06-20 09:35:01 - F
我正在尝试通过编译在 Mac 上安装 rsync 3.2.3。但是,我想安装所有功能。为此,它需要一些库,此处 ( https://download.samba.org/pub/rsync/INSTA
进入 Web 开发有点困难。过去 5 年我一直致力于 winforms 工作。所以我正在努力从一种切换到另一种。前段时间,我使用过 JavaScript,但现在还没有大量的 JavaScript 库
Thật khó để nói những gì để hỏi ở đây. Câu hỏi không rõ ràng, mơ hồ, không đầy đủ, quá rộng hoặc hùng biện và không thể trả lời hợp lý ở dạng hiện tại. Để được trợ giúp làm rõ vấn đề này để có thể mở lại, hãy truy cập trung tâm trợ giúp Đóng 1.
我正在寻找一个用Python编写的与logstash(ruby + java)类似的工具/库。 我的目标是: 从 syslog 中解析所有系统日志 解析应用程序特定日志(apache、django、m
Như hiện tại, câu hỏi này không hoàn toàn phù hợp với định dạng Hỏi & Đáp của chúng tôi. Chúng tôi hy vọng câu trả lời sẽ được hỗ trợ bởi các sự kiện, trích dẫn hoặc kiến thức chuyên môn, nhưng câu hỏi có thể gây ra tranh luận, tranh luận, bỏ phiếu hoặc thảo luận mở rộng. Nếu bạn cảm thấy vấn đề này có thể được cải thiện và có thể mở lại, hãy truy cập
我花了几天时间试图寻找用于 JavaPOS 实现的 .jar 库,但我找不到任何可以工作的东西。我找到了很多像这样的文档:http://jpos.1045706.n5.nabble.com/file/
这个问题在这里已经有了答案: Merge multiple .so shared libraries (2 个答案) 关闭 9 年前。 我有我在代码中使用的第三方库的源代码和对象。该库附带有关如何使
Tôi là một lập trình viên xuất sắc, rất giỏi!